Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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# 将字符串转换为短字符串_C#_Hex_Typeconverter - Fatal编程技术网

C# 将字符串转换为短字符串

C# 将字符串转换为短字符串,c#,hex,typeconverter,C#,Hex,Typeconverter,我有一个包含下一个值的字符串:0x6007.StringToSort 但是,当我尝试用下一种方法转换此字符串时,我想将其转换为短变量: short s = ((short)Convert.ToUInt16(stringToShort, 16)); 那么s等于24583,而不是我需要的0x6007 有人能帮忙吗?像0x6007和24583这样的值是供人使用的。它们是数字的文本表示,仅对人类有意义 就计算机而言,当处理实际数字时,它只理解二进制,甚至在那里,只是在抽象的意义上…它并不真正地存储二进

我有一个包含下一个值的字符串:0x6007.StringToSort 但是,当我尝试用下一种方法转换此字符串时,我想将其转换为短变量:

short s = ((short)Convert.ToUInt16(stringToShort, 16));
那么s等于24583,而不是我需要的0x6007


有人能帮忙吗?

像0x6007和24583这样的值是供人使用的。它们是数字的文本表示,仅对人类有意义

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

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

例如,将值0x6007存储在短变量中时,该变量包含值0x6007。它还包含值24583。哦,它还包含110000000000111二进制值,60007八进制值,甚至12287进制值。因为计算机存储的不是这些数字的任何特定表示,而是这些人类可读数字所表示的大小的内部表示

但它们都是一样的。当你解析一个像0x6007这样的人类可读字符串时,你会在你存储结果的变量中准确地得到这个值,也就是说,计算机内部表示一个具有相同大小的数字


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

0x6007是24583和110000000000111的十六进制二进制表示法:正如EZI上面所说,0x6007=24583。是否要以十六进制显示答案?是的,我希望短变量以十六进制显示:@user3976173 Try 24583.ToStringx,但我不认为有任何理由将字符串转换为int,然后再转换为string。看起来您缺少了一些基本概念。谢谢,我希望var是短的,而不是字符串。