我有一个 unsigned int[16] 数组,打印出来时看起来像这样:
4418703544ED3F688AC208F53343AA59
用于打印出来的代码是这样的:
for (i = 0; i < 16; i++)
printf("%X", CipherBlock[i] / 16), printf("%X",CipherBlock[i] % 16);
printf("\n");
我需要将这个无符号整数数组“CipherBlock”传递给只接受无符号字符 * 的解密()方法。如何正确地将“CipherBlock”数组中的所有内容存储到无符号字符数组中而不会丢失信息?
我的理解是 unsigned int 是 4 个字节, unsigned char 是 1 个字节。由于“CipherBlock”是 16 个无符号整数,因此以字节为单位的总大小 = 16 * 4 = 64 字节。这是否意味着我的 unsigned char[] 数组长度必须为 64?
如果是这样,以下工作是否可行?
unsigned char arr[64] = { '\0' };
memcpy(arr,CipherBlock,64);
这似乎不起作用。由于某种原因,它只将“CipherBlock”的第一个字节复制到“arr”中。此后“arr”的其余部分为“\0”。