gpt4 book ai didi

c++ - 外壳指针(unit8_t 到 uint16_t)返回字节的反向表示

转载 作者:行者123 更新时间:2023-11-30 00:47:10 28 4
gpt4 key购买 nike

我正在尝试运行这段代码:

#include <iostream>
#include <string>
#include <cstdint>
#include <array>

int main()
{
std::array<std::uint8_t, 2> one_byte_array;
one_byte_array[0] = 0xff;
one_byte_array[1] = 0x00;
auto ptr8 = one_byte_array.data();
std::uint16_t* ptr16 = (std::uint16_t*)ptr8;
std::cout << *ptr16;
return 0
}

Live Demo

输出:

255

我认为它应该输出:

65280

因为 0xff代表MSBs新的 word0x00代表 LSBs新的 word .我错过了什么?

最佳答案

您的转换行为未定义:这是因为类型不相关。

如果您想将两个 uint8_t 合并为一个 uint16_t,则创建前者的一个包含 2 个元素的数组 memcpy 将其放入 uint16_t

(不要uint16_tunionuint8_t 的数组视为读取行为返回一个不是您用来设置 union 数据的 union 成员也是未定义。)

关于c++ - 外壳指针(unit8_t 到 uint16_t)返回字节的反向表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35605496/

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