Лучшим способом, вероятно, является просто декодирование строки. Однако, если это действительно необходимо, это можно сделать «на лету» вместо полного декодирования, за которым следует поиск. Вам придется реализовать свой один поиск и просто декодировать только ту часть, которую вы сейчас проверяете. Это, скорее всего, полезно, только если у вас очень большие строки, которые вы действительно не хотите (или не можете) хранить дважды в памяти.
Если строка, которую вы ищете, достаточно длинна, вы можете также закодировать эту строку три раза с помощью различных дополнений (например, '', 'x' и 'xx') и искать тех, у кого нет первых 4 и последних 4 символов (вы не хотите соответствовать заполнению). Когда вы найдете совпадение, вы должны убедиться, что выравнивание соответствует заполнению и убедитесь, что части, которые вы еще не набрали (из-за заполнения), также находятся на своем месте. Последнее, конечно, требует некоторого декодирования.
Good xref; не уверен в «разных значениях». Тот же текст может быть закодирован в 3 разных формах, в зависимости от того, является ли это первым, вторым или третьим байтом в строке. И это, безусловно, усложняет поиск. – 2008-12-07 07:30:38
Да, это то, что я пытался понять и упростить. – 2008-12-07 19:48:50