Вы просто хотите его использовать или по какой-то причине настаиваете на коде?
В моей системе 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
}
Это должно работать для little-endian.