преобразование строки (шестнадцатеричное) в десятичное приводит к исключению - PullRequest
2 голосов
/ 14 марта 2011

Мой вопрос кажется простым, но я пару часов гуглил безрезультатно.Я должен использовать строку (шестнадцатеричный формат) и преобразовать в целое число.(строка возвращается из коммерческой библиотеки).

если я это сделаю,

string stringInHex = getThevaluefromthelibrary(); //psuedo

и напечатайте stringInHex, используя

stringInHex.ToString()

Я вижу 0x00

но если я попытаюсь преобразовать его в int, см. Ниже:

int myInt = int.Parse(stringInHex , System.Globalization.NumberStyles.HexNumber);

Я получу следующее исключение:

Exception errorSystem.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)

Я думаю, строка, возвращаемая избиблиотека, которую я использую, закодирована как-то странно.

Ответы [ 2 ]

13 голосов
/ 14 марта 2011

Строка не может содержать префикс 0x .Простая передача значения 00 приведет к тому, что вы хотите.

2 голосов
/ 14 марта 2011
int myInt = int.Parse(stringInHex.Substring(2) , System.Globalization.NumberStyles.HexNumber);

Вам не разрешено включать ведущий "0x", поэтому вместо него передайте int.Parse.

...