Вы просто хотите использовать его, или вы почему-то настаиваете на коде?
В моей системе Debian команда strings
может сделать это из коробки. См. Исключение из справочной системы:
--encoding=encoding
Select the character encoding of the strings that are to be found. Possible values for encoding are: s = single-7-bit-byte characters (ASCII, ISO 8859,
etc., default), S = single-8-bit-byte characters, b = 16-bit bigendian, l = 16-bit littleendian, B = 32-bit bigendian, L = 32-bit littleendian. Useful
for finding wide character strings.
Редактировать: ОК. Я не знаю C#, так что это может быть немного волосатым, но в основном вам нужно искать последовательности чередующихся нулей и английских символов.
byte b;
int i=0;
while(!endOfInput()) {
b=getNextByte();
LoopBegin:
if(!isEnglish(b)) {
if(i>0) // report successful match of length i
i=0;
continue;
}
if(endOfInput()) break;
if((b=getNextByte())!=0)
goto LoopBegin;
i++; // found another character
}
Это должно работать для малоэтажных.
Только для английского и UTF-8 строки (1) должны быть в порядке. – mouviciel
Если язык не имеет значения, то почему бы вам не проверить источник самой утилиты строк? –