c语言十六进制打印结构体

使用十六进制打印结构体的时候发现每次打印都是出来八个字符,如下:

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);
    }
}

 

你可能感兴趣的:(嵌入式,c语言,linuxc,c语言)