2014-10-08 163 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);