私は削除0x00
の上位バイトを、持っていた知っているバイトの配列として表された文字列を持っているような文字列が圧縮されていること:圧縮された(上位バイトを削除した)バイトをUnicode文字列に変換する方法は?
0x43 0x6F 0x6D 0x6D 0x61 0x6E 0x64 //"Command"
がどのように私はUnicodeにバイトを変換することができます文字列?
byte[] compressedBytes = br.ReadBytes(stringLength);
byte[] uncompressedBytes = new byte[stringLength * 2];
for (int byteCounter = 0; byteCounter < stringLength; byteCounter++)
{
uncompressedBytes[byteCounter * 2] = compressedBytes[byteCounter];
}
return Encoding.Unicode.GetString(uncompressedBytes);
またはすべてのバイトを扱いますエンコーディングがある:
私は毎秒間隔で、2倍のサイズとなる新しい配列(uncompressedBytes
)にバイトをコピーする必要が推測しています上位バイトが欠落しているUnicode文字として表示されますか?
残念ながら、私は*すべてのバイトが0x7fの以下であること*知りません。 – ThunderFrame
より大きいUnicode値の上位バイトを削除すると、データが破損します。 Unicodeには圧縮はなく、確かにバイトを切り捨てるものはありません。したがって、すべてのバイトが0x7F以下であれば、UTF-8と互換性のあるASCIIを使用できます。 0x80-0xFFの間にバイトがある場合は、ANSI、おそらくISO-8859-1、おそらくWindows-1252またはその他のエンコーディングも扱っています –