将字符串转换为uint

时间:2010-11-15 22:05:05

标签: c# visual-studio-2008

我试图从文本框中读取十六进制值,然后将其放在uint中,这是代码:

UInt32 x = Convert.ToUInt32(location_txtbox.ToString());

为什么,我想将x传递给一些非托管代码,函数头需要一个DWORD。

我收到的'输入字符串格式错误不正确?我试图输入0x7c或0x777等值,但我一直收到错误?

感谢。

4 个答案:

答案 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)

请参阅:http://msdn.microsoft.com/en-us/library/swz6z5ks.aspx

答案 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属性,如上所述。