Czy po prostu chcesz go użyć, czy też z jakiegoś powodu nalegasz na kod?
W moim systemie Debian wygląda na to, że polecenie strings
może to zrobić po wyjęciu z pudełka. Zobacz przykład strony man:
--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.
Edytuj: OK. Nie znam C#, więc może to być trochę owłosione, ale w zasadzie trzeba szukać sekwencji zera na przemian i angielskich znaków.
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
}
To powinno działać dla little-endian.
Tylko w języku angielskim i UTF-8 łańcuchy (1) powinny już być w porządku. – mouviciel
Jeśli język nie ma znaczenia, dlaczego nie sprawdzasz źródła samego narzędzia string? –