我正在使用 AES 加密一些要在数据包中发送的数据。我需要将一个整数存储在一个 8 位元素的数组中。为了清楚起见,我的数组声明为:
uint8_t in[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00};
我需要能够在这个数组中存储一个整数,然后在接收客户端轻松检索数据。有没有简单的方法来实现这一点?
这通常通过位移来实现:
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 对其进行加密,您需要考虑一个合理的填充算法。目前,您看起来正朝着零填充前进,这远非最佳。