2016-11-09 138 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

相關問題