gpt4 book ai didi

c - 在一个单词中获取字节地址的最安全的跨平台方法是什么?

转载 作者:行者123 更新时间:2023-12-04 12:09:07 25 4
gpt4 key购买 nike

以下套路byte大端为 1,小端为 0。

uint16_t word = 0x0001;
uint8_t byte = *(((uint8_t *)&word) + 1);
有什么方法可以获取跨平台安全的低字节或高字节的地址吗?

最佳答案

也许是这样的:

int isBigEndian()
{
uint16_t word = 0x0001;
return *(((uint8_t *)&word) + 1);
}

void main()
{
uint16_t word = 0x0001;
uint8_t byte = *(((uint8_t *)&word) + isBigEndian());
printf("%d\n", byte);
}
为了避免每次都在运行时检查,您可以使用 #define并使用 assert 验证这是一个正确的假设.像这样:
#define BIG_ENDIAN 0  // 0 or 1 depending on what the platform is

void main()
{
assert(isBigEndian() == BIG_ENDIAN); // Make sure #define is OK
// more code...
}
在代码的其他地方,您使用符号 BIG_ENDIAN根据平台编译代码。所以除了 assert 没有其他实际检查.

关于c - 在一个单词中获取字节地址的最安全的跨平台方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68233297/

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