我的问题看起来很简单,但我用Google搜索了几个小时而没有结果。 我必须使用一个字符串(十六进制格式)并转换为整数。 (该字符串是从商业图书馆返回的。)
如果我这样做,
string stringInHex = getThevaluefromthelibrary(); //psuedo
并使用
打印stringInHexstringInHex.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)
我认为从我正在使用的库中返回的字符串在某些方式中编码很奇怪。
答案 0 :(得分:13)
该字符串不能包含 0x 前缀。只需传递值 00 即可实现您的目标。
答案 1 :(得分:2)
int myInt = int.Parse(stringInHex.Substring(2) , System.Globalization.NumberStyles.HexNumber);
您不能包含前导“0x”,因此请将以下内容传递给int.Parse
。