将整数存储在数组中,其中元素表示值的1个字节

时间:2012-12-06 19:09:13

标签: arrays aes nesc

我正在使用AES来加密我要在数据包中发送的一些数据。我需要在8位元素的数组中存储一个整数。为清楚起见,我的数组声明为:

uint8_t in[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                  0x00,0x00,0x00,0x00};

我需要能够在此数组中存储整数,然后轻松检索接收客户端中的数据。有没有一种简单的方法可以实现这一目标?

1 个答案:

答案 0 :(得分:1)

这通常通过位移来实现:

int i = 42;
in[0] = i & 0xff;
in[1] = (i >> 8)  & 0xff;
in[2] = (i >> 16) & 0xff;
in[3] = (i >> 24) & 0xff;

请注意,不能总是保证int是四个字节。但是,基于sizeof i,将上述代码转换为循环很容易。

检索整数的工作方式如下:

int i = in[0] | (in[1] << 8) | (in[2] << 16) | (in[3] << 24);

当然,如果你要用AES加密它,你需要考虑一个明智的padding algorithm。目前看起来你正朝着零填充的方向前进,这远非最佳。