从字符串转换为UInt32 - C#

时间:2014-10-24 13:35:27

标签: c# visual-studio string-conversion uint32 uint

我将UInt32值作为XML文件中的字符串读取。然后我想将其转换为UInt32。

UInt32 res = Convert.ToUInt32("0x00B73004", 16);

但转换后的结果值为:12005380

为什么会这样?

3 个答案:

答案 0 :(得分:4)

它正如预期的那样工作。 0xB73004(带有任意数量的前导零)是十进制表示法的12005380。

>>> hex(12005380)
'0xb73004'

答案 1 :(得分:3)

正如其他答案所示,十六进制数B73004等于十进制数12005380.

您可能忘记的是UInt32无法保留任何格式。 UInt32只是32位的组合,代表一个数字;一个值。这个数字的显示方式完全取决于您。您可以将其显示为十六进制,binairy或十进制数。例如:

Console.WriteLine("{0} = {0:X}", res);

您甚至可以告诉Visual Studio以十六进制格式显示值,右键单击Watch窗口并选择'十六进制显示'。

此行为与浮点数相同:如果应使用点或逗号格式化,则不包含任何信息。这取决于(当前)文化。 同样适用于DateTime:它包含日期和时间,没有任何格式。程序员可以定义应该如何显示日期和时间(例如:dd-MM-yyyyyyyy-MM-dd等)。

答案 2 :(得分:1)

0x00B73004只是12005380的{​​{3}}。前缀"0x"是表示十六进制常量的最常用符号。

因为你在这里问为什么是数学方面的;

00B73004 16 = 0 * 16 7 + 0 * 16 6 + B * 16 5 + 7 * 16 4 + 3 * 16 < sup> 3 + 0 * 16 2 + 0 * 16 1 + 4 * 16 0

= 0 + 0 + 11 * 16 5 + 7 * 16 4 + 3 * 16 3 + 0 * 16 2 + 0 * 16 1 + 4 * 16 0

= 0 + 0 + 11534336 + 458752 + 12288 + 0 + 0 + 4

= 12005380

顺便说一下B hex = 11 dec

您可以将此十六进制表示法保存为数字值,如;

uint i = 0x00B73004;

没错。您可以在调试器上看到它的hexadecimal notation值。

enter image description here