gpt4 book ai didi

在 C 中将 4 个字节的 char 转换为 int32

转载 作者:太空狗 更新时间:2023-10-29 16:33:26 25 4
gpt4 key购买 nike

我首先将一个 int32 数字转换为 char[4] 数组,然后通过 (int *) 将数组转换回 int32,但数字与之前的数字不同:

unsigned int num = 2130706432;
unsigned int x;
unsigned char a[4];

a[0] = (num>>24) & 0xFF;
a[1] = (num>>16) & 0xFF;
a[2] = (num>>8) & 0xFF;
a[3] = num & 0xFF;

x = *(int *)a;
printf("%d\n", x);

输出为 127。如果我设置 num = 127,则输出为 2130706432。有没有人有想法?

最佳答案

反转 a[] 索引的顺序,例如。 a[0] -> a[3]

我认为你的字节顺序是相反的。

试试这个:

a[3] = (num>>24) & 0xFF;
a[2] = (num>>16) & 0xFF;
a[1] = (num>>8) & 0xFF;
a[0] = num & 0xFF;

关于在 C 中将 4 个字节的 char 转换为 int32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173037/

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