나는 제거 0x00
의 상위 바이트를 한 것을 알고 바이트의 배열로 표현 된 문자열이 같은 문자열이 압축되어 :압축 된 (상위 바이트를 제거한) 바이트를 유니 코드 문자열로 변환하는 방법?
0x43 0x6F 0x6D 0x6D 0x61 0x6E 0x64 //"Command"
가 어떻게 유니 코드로 바이트를 변환 할 수 있습니다 끈?
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);
또는 모든 바이트를 치료하는 것이다 인코딩이 :
나는 모든 초 간격으로 두 번 크기가되는 새로운 배열 (uncompressedBytes
)로 바이트를 복사해야 같은데요 상위 바이트가없는 유니 코드 문자로?
불행히도, 난하지 * 알고 * 모든 바이트에서 0x7f 이하인 것을. – ThunderFrame
더 큰 유니 코드 값의 상위 바이트를 제거하면 데이터가 손상됩니다. 유니 코드에는 압축이없고, 단순히 바이트를 잘라 내지 않는 것은 아닙니다. 따라서 모든 바이트가 0x7F 이하이면 UTF-8과 호환되는 ASCII가됩니다. 0x80-0xFF 사이에 바이트가 있으면 ANSI, 대개 ISO-8859-1을 처리하지만 Windows-1252 또는 다른 인코딩도 처리합니다 –