Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串转换为uint_C#_Visual Studio 2008 - Fatal编程技术网

C# 将字符串转换为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作为解析十六进制的第

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

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)