问题:C语言中怎样以十六进制输出单字节的数据?
解决办法:
unsigned char ch;
printf("%02X", ch);
示例如下:
void dump_bytes(unsigned char *data, int len)
{
int i;
for (i = 0; i < len; i++) {
printf("%02X", *(data + i));
if((i+1)%10 == 0)
printf("\n");
}
}
说明:
(1)%02X 表示以大写的十六进制输出;
(2)%02x 表示以小写的十六进制输出;
(3)注意,这里是unsigned char *data, 而不是char *data;
(4)若是char *data 时, 当(*data)>= 0x80 时,输出显示的不是一个字节。