2016-12-31 23 views

回答

0

問題是數據溢出。 char爲-128〜127,當0xef = 239 所以,你可以使用類型intshort或只是unsigned char,這樣的:

#include <stdio.h> 
int main() 
{ 
    int x = 255; 
    unsigned char hex[4] = {0}; 
    hex[0] = 0x02; 
    hex[1] = 0x20; 
    hex[2] = 0xef; 
    hex[3] = x; 
    for(int i = 0; i < 4; i++) 
     printf("%02X ", hex[i]); 
} 
+0

它的工作,謝謝。將char更改爲unsigned char也起作用。 –

+0

'char'的簽名是實現定義的。 '((un)signed)char'只有一個最小保證範圍。不能保證範圍是'-128..127'。 – Olaf

+0

如果數字始終小於或等於255,則使用'unsigned char'而不是int來表示x和十六進制。 – Sander

相關問題