使用十六进制打印结构体的时候发现每次打印都是出来八个字符,如下:
typedef struct temp{
int aa;
long bb;
}TEMP;
void printMsg()
{
int i;
TEMP message;
char *fp = (char *)&message;
for(i = 0; i < sizeof(TEMP); i++)
{
printf("%02x ",fp+i);
}
printf("\n");
}
这里打印出来的就会是:aabbee12 aabbee23 aabbee34这种的;我希望的是打印两个字符,因为一个字节打印字符串就是两个字符,现在却出现了四个字符;
问题出在哪里呢,怎么处理呢;问题出在变量类型上,unsigned char 就可以处理其他类型都不行,即使强转了unsigned char类型也是不行的。
修改如下:
typedef struct temp{
int aa;
long bb;
}TEMP;
void printMsg()
{
int i;
TEMP message;
unsigned char uchr;
char *fp = (char *)&message;
for(i = 0; i < sizeof(TEMP); i++)
{
uchr = *(fp + i);
printf("%02x",uchr);
}
}
版权声明:本文为cao849861802原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。