C# 将字符串转换为uint
我试图从文本框中读取十六进制值,然后将其放入uint,代码如下:C# 将字符串转换为uint,c#,visual-studio-2008,C#,Visual Studio 2008,我试图从文本框中读取十六进制值,然后将其放入uint,代码如下: UInt32 x = Convert.ToUInt32(location_txtbox.ToString()); 为什么,我想把x传递给一些非托管代码,而函数头需要一个DWORD 我得到一个“输入字符串格式不正确”错误?我正在尝试输入0x7c或0x777之类的值,但我不断收到错误 谢谢。假设location\u txtbox是一个文本框,您可能需要使用.Text而不是.ToString() 我认为需要传递16作为解析十六进制的第
UInt32 x = Convert.ToUInt32(location_txtbox.ToString());
为什么,我想把x传递给一些非托管代码,而函数头需要一个DWORD
我得到一个“输入字符串格式不正确”错误?我正在尝试输入0x7c或0x777之类的值,但我不断收到错误
谢谢。假设location\u txtbox是一个文本框,您可能需要使用.Text而不是.ToString() 我认为需要传递16作为解析十六进制的第二个参数:例如Convert.UInt32(X,16) 请参阅:在指定转换基准的位置使用此选项。它应该使用或不使用前导“0x”
Convert.ToUInt32
只需调用。如果调用接受NumberStyles
参数的,可以指定值为十六进制。问题是,您必须删除前导的“0x”,因为这是不允许的
var hexNumber = "0x777".Substring(2);
uint.Parse(hexNumber, System.Globalization.NumberStyles.HexNumber)
A) 如果不将Convert包装在try/catch中,或者除非您非常确定正在解析的内容将被成功解析,否则不要使用Convert
B) 使用uint.TryParse。特别是,使用允许您指定数字样式的样式。参考资料载于
C) 在样式中,似乎需要NumberStyles.HexSpecifier
D) 使用Text属性,如上所述。谢谢,是的,我非常同意。这只是我的一个测试应用程序,我确切地知道传递了什么值,所以我不会得到任何错误;但是是的,通常我把所有东西都包起来。
var hexNumber = "0x777".Substring(2);
uint.Parse(hexNumber, System.Globalization.NumberStyles.HexNumber)