2014-01-29 3 views
0

Надеюсь, я объясню эту очистку.Строка, основанная на маленьком значении до uint16 (VB.NET)

Я получил данные от третьего лица в двоичном формате.

Когда я прочитал некоторые байты в строке я получаю следующие значения

& H80 & H00

По словам разработчика, который представляемого инфо-ее Little Endian первый, так в том, что shoudl быть

& H00 & H80, который дает значение 128, что является то, что мне говорят, является правильным значением.

Теперь резервирование строки не является проблемой, но как мне получить значение 128?

Я смотрел на BITCONVERT и SYSTEM.TEXT.ENCODING, я думаю, что могу быть на правильном пути, но я просто что-то пропустил.

Любая помощь была бы принята с благодарностью.

+0

Вы должны прекратить использовать строку первой, она не способна хранить двоичные данные и будет произвольно развратить данные, когда строка нормализована или сбой вашей программы, когда она встречает недействительную суррогатную пару. Вместо этого вы должны использовать массив MemoryStream или Byte(). Теперь BitConverter или BinaryReader просты в работе. –

ответ

0

Если вы уже читали байт в массив, вы можете использовать BitConverter класс, например:

Dim input As Byte() = {&H80, &H00} 
Dim result As Int16 = BitConverter.ToInt16(input, 0) ' is now 128 ' 
+0

Dominic - это моя проблема, когда я читаю строку в байтах(), я получаю либо байты {127, 32, 0, 0), либо байты {0, 0, 32 127}. Что следует использовать для чтения строки в байтах UTF8.GetBytes, Unicode.GetBytes и т. Д.? –

+0

Как выглядит ваша строка? Почему это строка в первую очередь вместо 'byte()'? – sloth

+0

@JimBuckleyBarrett - Вы продолжаете говорить строку, вы действительно используете строку? –

Смежные вопросы