我有一个六个16位整数和一个32位整数(总共16个字节)的结构,我试图一次读取一个结构。目前我使用
printf("%.4x %.4x %.4x %.4x %.4x %.4x %.4x\n", );
将7个struct成员作为以下参数。
我的输出如下:
0001 0100 0010 0002 0058 0070 464c45
我想将其格式化为:
01 00 00 01 10 00 02 00 58 00 70 00 45 4c 46 00
我一直在各处搜索,试图找出如何正确格式化它。任何帮助将不胜感激!提前谢谢你!
答案 0 :(得分:1)
你可以在结构上移动一个unsigned char
指针,按字节读取字节(我希望我不会混淆C ++,进入未定义的行为可能会发生在做这样的事情时):
#include <stdio.h>
#include <stdint.h>
struct Data {
int16_t small[6];
int32_t big;
};
void funky_print(struct Data const * data) {
unsigned char const * ptr = (unsigned char const *)data;
size_t i;
printf("%.2hhx", *ptr);
++ptr;
for (i = 1; i < sizeof(*data); ++i) {
printf(" %.2hhx", *ptr);
++ptr;
}
}
int main(void) {
struct Data d = {{0xA0B0, 0xC0D0, 84, 128, 3200, 0}, 0x1BADCAFE};
funky_print(&d);
return 0;
}