2014-10-08 167 views
0

我正在使用C語言。我想從控制檯獲取十六進制值。例如從控制檯中獲取一個十六進制值C

argv[1] = "0xABCFFABC" 

和我想的值存儲在無符號字符數組,所以在最後我想獲得這樣的事:

unsigned char hex[4] = {0xAB, 0xCF, 0xFA, 0xBC} 

然後我處理信息和我需要做相反的過程:從和十六進制值{0xFF, 0xAB, 0x01, 0x0A}到一串"0xFFAB010A" ???並在控制檯上打印最終值。

+0

試試看,給我們看一些代碼。提示:scanf或strtol。 – 2014-10-08 03:19:34

+0

'if(sscanf(buf,「%2hhX%2hhX%2hhX%2hhX」,&byte1,&byte2,...)== 4){' – chux 2014-10-08 03:21:32

回答

0

對於argv[1]hex[4],您可以使用chux」的做法與上面的argv[1]+2buf作爲hex[0]byte1

hex[4]將一個字符串,並打印,可以做如下:

char string[2+4*2+1]; 
    sprintf(string, "0x%02X%02X%02X%02X", hex[0], hex[1], hex[2], hex[3]); 
    printf("%s\n", string);