印刷すると次のようになる unsigned int[16] 配列があります。
4418703544ED3F688AC208F53343AA59
印刷に使用されるコードは次のとおりです。
for (i = 0; i < 16; i++)
printf("%X", CipherBlock[i] / 16), printf("%X",CipherBlock[i] % 16);
printf("\n");
この unsigned int 配列「CipherBlock」を unsigned char * のみを受け取る decrypt() メソッドに渡す必要があります。情報を失うことなく、「CipherBlock」配列から unsigned char 配列にすべてを正しく memcpy するにはどうすればよいですか?
私の理解では、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」です。