gpt4 book ai didi

c++ - 显示数组中存储的 Hexa 值

转载 作者:行者123 更新时间:2023-11-28 07:11:56 29 4
gpt4 key购买 nike

我有一个名为 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]);

这个函数的输出是height=65460,0,ffffffb4

虽然其他时候输出的是height=180,0,b4

请告知其背后的原因

最佳答案

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

关于c++ - 显示数组中存储的 Hexa 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20840517/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com