Разбор шестнадцатеричной строки в C # - PullRequest
1 голос
/ 12 марта 2019

У меня есть следующая шестнадцатеричная строка (форма с прямым порядком байтов):

ffffffffffff0800272bfcf608004500

и мне нужно расшифровать его в несколько полей. Я знаю, что первое поле - это маркер для «версии», и это uint16. У меня есть скрипт Python, который декодирует приведенную выше строку, и он говорит мне, что «версия» 258. Теперь я пытаюсь декодировать его в C #.

Насколько я понимаю, значение uint16 составляет 2 байта, поэтому ffff (4 бита на символ) должен дать мне верный маркер версии? Я использую

UInt16.Parse("ffff");

но я получаю ошибку:

"Input string was not in a correct format."

Что именно я делаю не так?

1 Ответ

1 голос
/ 12 марта 2019

Вы можете сделать:

int result = int.Parse("ffff", System.Globalization.NumberStyles.HexNumber);

или

int result = Convert.ToInt16("ffff", 16);

Обратите внимание, что в первом случае второй аргумент является поставщиком, а во втором - базой.

...