Как я могу получить String из Byte () без искажения его двоичного содержимого? - PullRequest
4 голосов
/ 14 марта 2012

У меня есть язык, который обычно содержит сериализованные сообщения данных в удобочитаемом формате, но некоторые продукты в этом языке содержат дословные, двоичные данные.

Мой анализатор использует 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() ввода?

1 Ответ

2 голосов
/ 14 марта 2012

Исходя из нашего обсуждения комментариев, кажется, что вы хотите увидеть Byte экземпляры в отсутствие кодировки. Если это так, вы должны рассмотреть возможность использования List(Of Byte) вместо String

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...