我想将一个整数转换成char数组,并从该char数组中检索相同的数字。
想想数字20。
因为1 int(4字节)=1个字符,
0000 0000 0000 0000 0000 0001 0100=(20)十进制
___0}uu 0}uu 0}uu 0}uu 0}uu 0}uu 1}uu 4=十六进制表示
我希望这个模式00000014以4个字符的形式存储在char数组中,因为integer只占用4个字符的空间,这样char数组在转换成integer(可以使用sscanf())后将得到相同的结果(20)。
我该怎么做?

最佳答案

您可以使用union

union myUnion {

    int x;
    char bytes[sizeof(int)];
};

使用它就像:
union myUnion un;
un.x = 98632;

在这种情况下,保持整数98632的字节数。如果您更改其中任何一个,更改也会反映在un.bytes中,因为un.x中的所有内容都有一个公共的内存位置。
转换是自动为您处理的,如果您希望union通过int获取,如果您希望字节通过un.x获取。无论您更改哪个工会成员,由于它是un.bytes,因此也会相应地在其其他成员中进行更改。

07-26 00:57