gpt4 book ai didi

c++ - 在 C++ 中连接十六进制值

转载 作者:行者123 更新时间:2023-11-30 01:46:18 25 4
gpt4 key购买 nike

我在用 C++ 连接两个十六进制值时遇到问题;

int virtAddr = (machine->mainMemory[ptrPhysicalAddr + 1] << 8) | (machine->mainMemory[ptrPhysicalAddr]);
int physAddr = currentThread->space->GetPhysicalAddress(virtAddr);

对于 machine->mainMemory[ptrPhysicalAddr + 1],这会产生 0x5。对于 machine->mainMemory[ptrPhysicalAddr],这会产生 0x84。我期望结果 0x584。但是,我收到了 0xffffff84。我关注了这个问题 Concatenate hex numbers in C .

最佳答案

0x84 是 -124。在按位或运算(整数提升)之前,它被扩大到 (int)-124。和 0x00000500 | 0xFFFFFF84 是你得到的结果。在加宽时使用无符号类型来防止符号扩展。

intptr_t virtAddr = (uint8_t(machine->mainMemory[ptrPhysicalAddr + 1]) << 8)
| uint8_t(machine->mainMemory[ptrPhysicalAddr]);

关于c++ - 在 C++ 中连接十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33424090/

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