簡體   English   中英

如何將十進制整數轉換為單個十六進制字符? (C)

[英]How do I convert a decimal integer into a single hexadecimal character? (C)

我試圖將十進制整數轉換為十六進制。 我已經在網上做了很多搜索,並找到了很多方法來做到這一點。 但是,我發現的每一種方式都轉換為字符串; 例如,我可以將100轉換為“64”。 這不是我需要做的。 我希望能夠將100轉換為'0x64',這是完全不同的事情。 出於某種原因,我懷疑答案非常簡單,但我似乎無法找到/記住它。 我正在編寫C編程語言,只是為了澄清。 任何幫助或想法將不勝感激。

謝謝,哈桑

C語言中的整數類型實際上沒有基礎。 當你說:

int a = 100;
int b = 0x64;

...... ab都有相同的值。 談論將a轉換為十六進制(或b轉換為十進制)沒有任何意義。

您不能將數字從十進制“轉換”為十六進制,因為它是一個數字(通常作為二進制存儲在內存中)。 在所有可能的位置系統中,所有相同數字的表示都存在於數字線上的完全相同的點上。 你可以用不同的基礎打印它:

int num = 15;
printf( "%d", num );   /* prints 15 */
printf( "0x%x", num ); /* prints 0xf */
printf( "0%o", num );  /* prints 017 (octal) */

num = 0xf;
printf( "%d", num );   /* prints 15 */
printf( "0x%x", num ); /* prints 0xf */
printf( "0%o", num );  /* prints 017 (octal) */

num = 017;
printf( "%d", num );   /* prints 15 */
printf( "0x%x", num ); /* prints 0xf */
printf( "0%o", num );  /* prints 017 (octal) */

嗯,

int i = 100;
char c = i; // c now has the value 0x64 (aka decimal 100)

除了確保i不超過255之外,你真的沒有別的事可做。

數字基礎僅在打印或以其他方式向人類顯示數字時才真正發揮作用。 就內存中的數字而言,100是0x64,0144是1100100.它們都是相同的值,因此它們都由相同的位組表示。

這就像問你將如何用西班牙語顯示綠色。 無論您使用何種語言,綠色都是綠色。 只有當你試圖想出一個把它寫成一個單詞的方法時,你必須考慮你將要使用的語言。 所以它是數字並決定你將使用哪個基數。

十進制的100是十六進制的0x64 ,不需要'轉換'。 整數的基數只是解釋的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM