好的,所以每个人都说要使用:
// Store integer 182
int intValue = 182;
// Convert integer 182 as a hex in a string variable
string hexValue = intValue.ToString("X");
// Convert the hex string back to the number
int intAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
但是这不起作用。这是每次有人问的答案,但是当我这样做时,我的整数仍然会被转换回十进制。
这不是一个重复的问题,因为其他所有问题都有错误的答案,因为这实际上并不起作用。将int转换为hex int的真正方法是什么?这样做只会将intAgain保持为十进制182。
答案 0 :(得分:1)
声明int intValue = 182;
时,在内存中分配32位(4字节)。
由于内存只能存储二进制值,因此将182存储在内存中,如下所示:
00000000 #Byte 1
00000000 #Byte 2
00000000 #Byte 3
10110110 #Byte 4
执行string hexValue = intValue.ToString("X");
时,会在内存中分配一组字符来表示字符串
数字182,十六进制是B6
每个字符都存储为二进制,并设置为数字B6的数字
在内存中保存为二进制的字符使用UTF-16标准进行编码(每个字符需要2个字节)
变量hexValue的内存表示示例
01000010 #Byte 1 (char 'B')
00000000 #Byte 2
00110110 #Byte 3 (char '6')
00000000 #Byte 4
使用int intAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
,您可以将字符串再次转换为数字:
00000000 #Byte 1
00000000 #Byte 2
00000000 #Byte 3
10110110 #Byte 4
int类型不存储数字基数,只在内存中存储二进制值,十六进制或十进制只是表示值的一种方式,只有当你转换一个值时才能这样做。可读的字符串。