gpt4 book ai didi

c++ - 使用指针将字节数组转换为无符号整数

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:19 24 4
gpt4 key购买 nike

char* f = (char*)malloc(4 * sizeof(char));
f[0] = 0;
f[1] = 0;
f[2] = 0;
f[3] = 1;
unsigned int j = *f;
printf("%u\n", j);

所以如果内存看起来像这样:0000 0000 0000 0000 0000 0000 0000 0001

程序输出 0。如何让它输出整个 32 位的 uint 值?

最佳答案

因为您正在使用类型提升。 char将晋升为int访问时。你不会得到任何诊断。所以你正在做的是取消引用你的 char 中的第一个元素。数组,即 0,并将其分配给 int ...同样最终为 0。

你想要做的是技术上未定义的行为,但通常有效。你想这样做:

unsigned int j = *reinterpret_cast<unsigned int*>(f);

此时,您将处理未定义的行为和平台的字节顺序。您可能没有想要记录在字节流中的值。您所涉足的领域需要对您的编译器和目标架构有深入的了解。

关于c++ - 使用指针将字节数组转换为无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40687731/

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