我必须将uint8_t [] []生成的数字转换为简单的char []。如何将uint8_t [] []数转换为char键[]。我已将number转换为char并希望存储到数据库。
static const uint8_t blake2s_kat[BLAKE2_KAT_LENGTH][BLAKE2_KAT_LENGTH] =
{
{
0x69, 0x21, 0x7A, 0x30, 0x79, 0x90, 0x80, 0x94,
0xE1, 0x11, 0x21, 0xD0, 0x42, 0x35, 0x4A, 0x7C,
0x1F, 0x55, 0xB6, 0x48, 0x2C, 0xA1, 0xA5, 0x1E,
0x1B, 0x25, 0x0D, 0xFD, 0x1E, 0xD0, 0xEE, 0xF9
},
{
0xE3, 0x4D, 0x74, 0xDB, 0xAF, 0x4F, 0xF4, 0xC6,
0xAB, 0xD8, 0x71, 0xCC, 0x22, 0x04, 0x51, 0xD2,
0xEA, 0x26, 0x48, 0x84, 0x6C, 0x77, 0x57, 0xFB,
0xAA, 0xC8, 0x2F, 0xE5, 0x1A, 0xD6, 0x4B, 0xEA
},....};
e.g。
somenumber = blake2s_kat;
char key[100] = some function to convert into char(somenumber);
答案 0 :(得分:1)
你问的是有问题的,因为二维数组不是一维数组。
如果一个牢房就像一个房间
那么一维阵列就像一个带有房间的走廊
一个二维阵列就像一个人行道上的建筑物
你不能只是把建筑物转换成走廊。
您可以做的是将uint8_t[]
的每个子数组投射到char*
:
auto pointer = reinterpret_cast<char*>(blake2s_kat[SOME_INDEX]);
blake2s_kat[SOME_INDEX]
腐朽进入uint8_t*
,而不是可以投放到char*
。
另外,示例中的每个子数组似乎只包含8x4数字,而不是100.请确保考虑数组的大小。
另一种可能性是使用memcpy
:
char buffer[8x4];
memcpy(buffer, blake2s_kat[SOME_INDEX], 8x4);