如何将具有十六进制值的变量unsigned char以十六进制值转换为变量int。我得到了:无符号字符十六进制到int十进制转换C++
unsigned char length_hex = 0x30; // HEX
如何转换为int DEC?
int length_dec = length_hex; // With result length_dec = 48
如何将具有十六进制值的变量unsigned char以十六进制值转换为变量int。我得到了:无符号字符十六进制到int十进制转换C++
unsigned char length_hex = 0x30; // HEX
如何转换为int DEC?
int length_dec = length_hex; // With result length_dec = 48
正如有些人评论说,转换是自动的。尝试:
int main (void)
{
unsigned char length_hex = 0x30;
printf("0x30 is char:%c and int:%d.",length_hex,length_hex);
return 0;
}
,看看你会得到什么 - 当你把它转换成一个char它的“0”(字符0),并作为一个int它是48.此外,它其实并不重要,如果我救了常量0x30作为int或char。只要看看:
printf("0x30 is char:%c and int:%d.",0x30,0x30);
'在ASCII代码中的0x30'正好是char''0''我不明白这一点!所以我期望'0x30是char 0和int是48' –
正确,你的问题是什么?我只是显示转换分别自动为int和char。 – kabanus
的可能的复制[?为什么十六进制数字以0x前缀(http://stackoverflow.com/questions/2670639/why-are-hexadecimal-numbers-prefixed-with-0x) – Nikita
十六进制和十进制只是您查看数字的方式。无论如何它都以二进制存储。不,你不需要任何转换,它都是“自动”的。只要尝试打印'length_hex'作为'unsigned int'并查看结果(例如'std :: cout << static_cast(length_hex)') –
所以你基本上在最后一行回答了你自己的问题? :) –