显示存储在Array中的Hexa的值

时间:2013-12-30 13:27:43

标签: c++

我有和hexa值的数组调用  const char receiptLogo [] = {0x01,0x80,0x00,0xB4};

当我试图获取值Rprintf(“%x \ r \ n”,receiptLogo [3]);

值显示为“ffffffb4”,有时显示为“b4”

整个功能如下 void PRINT_PrintLogo(const char Data []) {

unsigned int  height=0;

const char receiptLogo[] = {0x01,0x80,0x00,0xB4};
height=(((unsigned short)receiptLogo[2] ) << 8) | ((unsigned short)receiptLogo[3] );
Rprintf("height=%d,%x,%x\r\n",height,Data[2],Data[3]);

}

此功能的输出是 高度= 65460,0,ffffffb4

虽然在其他时候输出是高度= 180,0,b4

请告知其背后的原因

1 个答案:

答案 0 :(得分:1)

在printf()中,%X格式说明符是十六进制int。如果您将char作为参数传递并且设置了最高有效位,则应签署extend以填充整数的大小。编译器可以通过打包变量进行优化,有时你的变量在字节边界的不同位置(即char可能最终在32位整数的最低有效字节或最高有效字节)。此访问可能会导致此行为。