我试图从文本框中读取十六进制值,然后将其放在uint中,这是代码:
UInt32 x = Convert.ToUInt32(location_txtbox.ToString());
为什么,我想将x传递给一些非托管代码,函数头需要一个DWORD。
我收到的'输入字符串格式错误不正确?我试图输入0x7c或0x777等值,但我一直收到错误?
感谢。
答案 0 :(得分:14)
使用此overload of Convert.ToUInt32指定转化的基础。它应该使用或不使用前导“0x”。
UInt32 x = Convert.ToUInt32(location_txtbox.Text, 16);
答案 1 :(得分:3)
假设location_txtbox是TextBox,您可能希望使用.Text而不是.ToString()。
我认为您需要传递16作为解析十六进制的第二个参数:例如Convert.UInt32(X,16)
答案 2 :(得分:2)
Convert.ToUInt32
只需致电UInt32.Parse(String)
。如果您调用带有NumberStyles
参数的overload,则可以指定您的值为十六进制。麻烦的是,你不得不削减领先的“0x”,因为它是不允许的。
var hexNumber = "0x777".Substring(2);
uint.Parse(hexNumber, System.Globalization.NumberStyles.HexNumber)
答案 3 :(得分:2)
A)切勿在不将其包装在try / catch中的情况下使用Convert,或者除非您非常确定要解析的内容将被成功解析。
B)使用uint.TryParse。特别是,使用允许您指定数字样式的那个。其参考文献位于http://msdn.microsoft.com/en-us/library/kadka85s.aspx
C)在样式中你需要NumberStyles.HexSpecifier
D)使用Text属性,如上所述。