将字符串转换为短字符串
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()
, 等等).
我有一个包含下一个值的字符串: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()
, 等等).