gpt4 book ai didi

c++ - 使用中间转换将 char* 缓冲区设置为 int*

转载 作者:IT王子 更新时间:2023-10-28 23:33:17 26 4
gpt4 key购买 nike

我无法完全理解我在这里阅读的内容的后果:Casting an int pointer to a char ptr and vice versa

简而言之,这行得通吗?

set4Bytes(unsigned char* buffer) {
const uint32_t MASK = 0xffffffff;
if ((uintmax_t)buffer % 4) {//misaligned
for (int i = 0; i < 4; i++) {
buffer[i] = 0xff;
}
} else {//4-byte alignment
*((uint32_t*) buffer) = MASK;
}

}

编辑
关于应该将指针转换为哪种类型以检查对齐方式,进行了长时间的讨论(在评论中,神秘地被删除了)。该主题现已解决 here .

最佳答案

如果您在所有 4 个字节中填充相同的值,则此转换是安全的。如果 byte order 很重要,那么这种转换是不安全的。因为当您使用整数一次填充 4 字节 时,它将填充 4 字节 但顺序取决于 endianness .

关于c++ - 使用中间转换将 char* 缓冲区设置为 int*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25994127/

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