gpt4 book ai didi

c - 字节反转整数的问题

转载 作者:行者123 更新时间:2023-12-04 11:35:48 24 4
gpt4 key购买 nike

祝你好运。

有人可以解释一下字节反转功能的这两种实现的逻辑差异。

示例 1:

uint32_t byte_reverse_32(uint32_t num) {
static union bytes {
uint8_t b[4];
uint32_t n;
} bytes;
bytes.n = num;

uint32_t ret = 0;
ret |= bytes.b[0] << 24;
ret |= bytes.b[1] << 16;
ret |= bytes.b[2] << 8;
ret |= bytes.b[3];

return ret;
}

示例 2:
uint32_t byte_reverse_32(uint32_t num) {
static union bytes {
uint8_t b[4];
uint32_t n;
} bytes;
bytes.n = num;

uint32_t ret = 0;
ret |= (bytes.b[0] << 24) || (bytes.b[1] << 16) || (bytes.b[2] << 8) || (bytes.b[3]);
return ret;
}

我一定遗漏了一些东西,因为对于无符号整数 0xFE12ADCF第一个例子正确地给出了 0xCFAD12FE而第二个产生 1 .我错过了什么?

顺便说一句,我不知道如何在 pre+code-tags 中获取 '<<',因此 LSHIFT .如果有可能,请随时编辑(并评论如何=))。

谢谢。

编辑:修复了 bytes -从未分配给的变量。

最佳答案

||| 不是同一个运算符.第一个是按位或,这是您想要的。第二个是 bool OR,这就是你所拥有的。

关于c - 字节反转整数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3745637/

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