将字符串转换为short

时间:2015-01-25 14:23:13

标签: c# hex typeconverter

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

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

然后s等于24583而不是0x6007,因为我需要。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

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

就计算机而言,在处理实际数字时,它只能理解二进制(甚至在那里,只是在抽象意义上......它不会真正存储二进制数字0和1)。

任何时候你问电脑它想到的是什么号码,它都会从基于二进制的表示转换为人类可读的表示(即使是二进制...我们也会感到害羞的人可以' 请参阅计算机中位的状态,并要求计算机将它们转换为可视化表示。)

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

但他们都是一样的。当您解析像#34; 0x6007"这样的人类可读字符串时,您会在您存储结果的变量中获得该值,即计算机的内部表示具有相同幅度的数字。

默认情况下,如果您要求计算机告诉您该值是什么,它将为您提供" 24583"的十进制表示。但是如果你想要十六进制表示,你只需要很好地问一下,计算机会给你这样的(例如在你的调试器中切换数字显示格式,或者在{{中使用" X"数字格式说明符) 1}},string.Format()等。)