所以我正在处理一个程序,它要求我从包含十六进制值的char数组中访问数据。在这个例子中,我必须使用一个名为func()的函数来访问数据结构。 Func()包含3个不同类型的指针变量,我可以使用它们中的任何一个来访问数组中的数据。我选择的数据类型将影响将存储到指针的值。 Soo继承了代码:
unsigned char data[]
{
0xBA, 0xDA, 0x69, 0x50,
0x33, 0xFF, 0x33, 0x40,
0x20, 0x10, 0x03, 0x30,
0x66, 0x03, 0x33, 0x40,
}
func()
{
unsigned char *ch;
unsigned int i*;
unsigned short* s;
unsigned int v;
s = (unsigned short*)&data[0];
v = s[6];
printf("val:0x%x \n",v);
}
输出:
缬氨酸:0x366
这个输出的问题是它应该是0x0366而前面的零为3,但它在printf语句中被切断,我不允许修改它。我怎么能解决这个问题?
答案 0 :(得分:4)
使用指定前导零的格式:%04x
。
如果不改变传递给printf
的格式或完全替换它,我担心无法影响输出。