将int转换为unsigned char数组并向后转换

时间:2014-12-18 10:58:26

标签: c

#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不是很熟悉,也不知道代码有什么问题。

提前感谢

1 个答案:

答案 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]);

应该有用。