шестнадцатеричные к целому - PullRequest
0 голосов
/ 18 октября 2010

Я знаю, как преобразовать шестнадцатеричные числа в целые, когда у меня есть только один шестнадцатеричный символ.но я получаю строку из двух символов.

Я конвертирую оба символа в шестнадцатеричные с помощью:

String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()))

, поэтому давайте скажем, что у меня есть 01 и 3f в качестве двух символов длины.как я должен преобразовать их в целое число?Я пытался сделать

int length = int.Parse("013f", System.Globalization.NumberStyles.AllowHexSpecifier);

, но, видимо, это неправильно.я даже взял значения обоих из них, Concat'd их вместе, а затем попытался проанализировать их ... это, очевидно, было неправильно

я делаю что-то не так, пытаясь разобрать эти два шестнадцатеричных числа в длину,или сервер получает информацию от системы нестандартной длины.потому что я могу получить правильную длину, когда первый символ 00, например, 0001 или что-то.Я просто не уверен, когда у меня есть два символа длины.

РЕДАКТИРОВАТЬ: после некоторых проб и ошибок, ожидаемое значение составляет 491

Обновление номер два:

Обычно сервер предоставляет мне двухсимвольную строку длиной, которая сообщает вам длину следующих данных.

два символа для этого конкретного атрибута - 01 и 3f.следующие данные имеют длину 491 символ, что, насколько я могу судить, не имеет отношения к 013f вообще, но я знаю, что где-то он есть, потому что другое приложение использует те же самые данные, но выдает правильныерезультаты.

1 Ответ

3 голосов
/ 18 октября 2010

Не совсем понятно, в чем проблема.

Шестнадцатеричное значение 0x013F является десятичным 319. Ваш код оценивает это правильно, хотя я бы использовал NumberStyles.HexNumber вместо NumberStyles.AllowHexSpecifier:

int length = int.Parse("013f", NumberStyles.HexNumber);

Какое число вы ожидаете преобразовать в 0x013F?

...