#include <stdio.h>
#include <stdlib.h>
int main(){
int n = 56789000;
unsigned char bytes[4];
bytes[0] = (n >> 24) & 0xFF;
bytes[1] = (n >> 16) & 0xFF;
bytes[2] = (n >> 8) & 0xFF;
bytes[3] = n & 0xFF;
int test = (bytes[3] << 24) | (bytes[2] << 16) | (bytes[1] << 8) | (bytes[0]);
printf("%d\n",n);
printf("%d\n", test);
}
输出是:
56789000
143155715
您好,
我正在尝试将整数存储到unsigned char数组中,并希望稍后将其转换回整数。我找到了一些代码片段,它引导我到上面的代码,但输出不是预期的。你能帮忙解决上面的代码吗?我对C不是很熟悉,也不知道代码有什么问题。
提前感谢
答案 0 :(得分:1)
此行的顺序相反
int test = (bytes[3] << 24) | (bytes[2] << 16) | (bytes[1] << 8) | (bytes[0]);
所以
int test = (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | (bytes[3]);
应该有用。