У меня есть язык, который обычно содержит сериализованные сообщения данных в удобочитаемом формате, но некоторые продукты в этом языке содержат дословные, двоичные данные.
Мой анализатор использует String
для своего буфера, так каккажется, легче всего работать с.Однако данные считываются из сетевого сокета в массив Byte
.
Теперь я пытаюсь соединить точки между Byte()
и String
:
' data as Byte()
' count as Integer
' buffer as String
buffer += System.Text.Encoding.ASCII.GetString(data, 0, count)
Но мое первоначальное предположение, что ASCII-кодировка просто оставит мои байты в одиночестве, оказалось неверным;любые байты со значением, которое не вписывается в 7-битную модель, были переведены в '?'
.
Итак, я подумал об использовании однобайтовой кодировки "Юникод", которая должна оставить мои байты в покое, нотакже разрешить значения во всем 8-битном диапазоне:
' data as Byte()
' count as Integer
' buffer as String
Dim enc = New System.Text.UTF8Encoding
buffer += enc.GetString(data, 0, count)
Но мои данные все еще искажены.На самом деле я пока не смог точно точно определить, как обрабатываются данные, но я знаю, что длина данных меняется, что указывает на то, что байты не оставляются дословно.
Итак, как я могу получить String
, содержимое которого является только дословной копией байтов из моего Bytes()
ввода?