将字符串(十六进制)转换为十进制会导致异常

时间:2011-03-14 09:47:10

标签: c# exception character-encoding hex

我的问题看起来很简单,但我用Google搜索了几个小时而没有结果。 我必须使用一个字符串(十六进制格式)并转换为整数。 (该字符串是从商业图书馆返回的。)

如果我这样做,

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 个答案:

答案 0 :(得分:13)

该字符串不能包含 0x 前缀。只需传递值 00 即可实现您的目标。

答案 1 :(得分:2)

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

您不能包含前导“0x”,因此请将以下内容传递给int.Parse