gpt4 book ai didi

c++ - 如何将 unsigned int 放入 char 数组并将其提取回来

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:30 25 4
gpt4 key购买 nike

有人可以解释为什么这不起作用吗?我正在尝试将一个 unsigned int 放入一个 char 缓冲区,然后将其取回另一个 unsigned int。

  1 #include<stdio.h>
2 #include<string.h>
3 int main(){
4 unsigned int tester = 320;
5 char buffer[512];
6 memset(buffer,0,512);
7 memcpy(buffer,&tester,sizeof(unsigned int));
8 /*buffer[0]|=tester;
9 buffer[1]|=(tester>>8);
10 buffer[2]|=(tester>>16);
11 buffer[3]|=(tester>>24);*/
12 unsigned int tested;
13 memcpy(&tested,buffer,sizeof(unsigned int));
14
15 /*tested|=(buffer[3]<<24);
16 tested|=(buffer[2]<<16);
17 tested|=(buffer[1]<<8);
18 tested|=(buffer[0]);*/
19 printf("\n %d\n",tested);
20 }

当我执行 memcpy 时,它会起作用。但是当我采用按位方法时,它不起作用。有趣的是,当我将缓冲区大小设置为 20 时,它就起作用了。但是当我使用大缓冲区,甚至 50 个缓冲区时,它总是按位打印 368。 memcpy 再次正常工作。

最佳答案

当你在第 12 行声明测试时 unsigned int tested; 它应该初始化为零 unsigned int tested =0; 另外,使用 -Wuninitialized 或 -Wall 编译会已警告您测试未初始化。

关于c++ - 如何将 unsigned int 放入 char 数组并将其提取回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367476/

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