2016-11-09 100 views
1

如何将具有十六进制值的变量unsigned char以十六进制值转换为变量int。我得到了:无符号字符十六进制到int十进制转换C++

unsigned char length_hex = 0x30; // HEX 

如何转换为int DEC?

int length_dec = length_hex; // With result length_dec = 48 
+0

的可能的复制[?为什么十六进制数字以0x前缀(http://stackoverflow.com/questions/2670639/why-are-hexadecimal-numbers-prefixed-with-0x) – Nikita

+0

十六进制和十进制只是您查看数字的方式。无论如何它都以二进制存储。不,你不需要任何转换,它都是“自动”的。只要尝试打印'length_hex'作为'unsigned int'并查看结果(例如'std :: cout << static_cast (length_hex)') –

+1

所以你基本上在最后一行回答了你自己的问题? :) –

回答

0

正如有些人评论说,转换是自动的。尝试:

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); 
+0

'在ASCII代码中的0x30'正好是char''0''我不明白这一点!所以我期望'0x30是char 0和int是48' –

+0

正确,你的问题是什么?我只是显示转换分别自动为int和char。 – kabanus

相关问题