У меня есть следующая шестнадцатеричная строка (с прямым порядком байтов):
ffffffffffff0800272bfcf608004500
и мне нужно расшифровать его в несколько полей. Я знаю, что первое поле является маркером «версии», и это uint16. У меня есть скрипт Python, который декодирует приведенную выше строку, и он сообщает мне, что «версия» равна 258. Теперь я пытаюсь декодировать ее на С#.
Насколько я понимаю, uint16 составляет 2 байта, поэтому ffff (4 бита на символ) должен дать мне правильный маркер «версии»? я использую
UInt16.Parse("ffff");
но я получаю сообщение об ошибке:
"Input string was not in a correct format."
Что именно я делаю неправильно?
NumberStyles.HexNumber к Parse и TryParse для анализа шестнадцатеричных чисел. И, конечно же, TryParse почти всегда лучше, чем Parse




Вы можете либо сделать:
int result = int.Parse("ffff", System.Globalization.NumberStyles.HexNumber);
или
int result = Convert.ToInt16("ffff", 16);
Обратите внимание, что вторым аргументом в первом случае является провайдер, а во втором — база.
Convert.ToUInt16("ffff", 16);