将字符串转换为短字符串

Convert string to short

我有一个包含下一个值的字符串:0x6007.(stringToShort) 我想将此字符串转换为短 var,但是,当我尝试以下一种方式转换它时:

short s = ((short)Convert.ToUInt16(stringToShort, 16));

然后 s 等于 24583 而不是我需要的 0x6007

有人能帮忙吗?

“0x6007”和“24583”等值供人类消费。它们是数字的文本表示,仅对人类有意义。

就计算机而言,在处理实际数字时,它只理解二进制(即使在那里,也只是抽象意义上的……它并不真正存储二进制数字 0 和 1)。

任何时候你问计算机它在想什么数字,它都会从基于二进制的表示转换为人类可读的表示(即使是二进制......我们弱小的人类无法看到 计算机中位的状态,必须要求计算机将它们转换为视觉表示。

当您将值 0x6007 存储在(例如)short 变量中时,该变量包含值 0x6007。它还包含值 24583。哦,它还包含值 110000000000111(二进制)和值 60007(八进制),甚至还包含值 12287(十二进制)。因为计算机存储的不是那些特定的数字表示形式,而是它自己对这些人类可读数字所代表的量级的内部表示。

但他们都是一样的。当您解析像“0x6007”这样的人类可读字符串时,您 do 会在您存储结果的变量中准确获得该值,即计算机对具有相同的量级。

默认情况下,如果您要求计算机告诉您该值是多少,它会给出“24583”的十进制表示形式。但是如果你想要十六进制表示,你只需要很好地询问,计算机就会把它给你(例如,在你的调试器中切换数字显示格式,或者在 string.Format() 中使用 "X" 数字格式说明符, Console.WriteLine(), 等等).