如何在 cpp 中将 uint8_t[][] 转换为字符 []
How to convert uint8_t[][] to char[] in cpp
我必须将uint8_t[][]生成的数字转换为简单的char[]。如何将uint8_t[][] 数字转换为字符键 []。我已将数字转换为字符,并想存储到数据库中。
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
},....};
例如
somenumber = blake2s_kat;
char key[100] = some function to convert into char(somenumber);
你问的是有问题的,因为二维数组不是一维数组。
如果一个单元就像一个房间,那么一维数组就像一个充满房间
的走廊,二维数组就像一个充满走廊
的建筑物,你不能只是把一个建筑物转换成走廊。
您可以做的是将每个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);
相关文章:
- HEX值到wchar_t字符(UTF-8)的转换
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 转换特殊字符(UTF-8)
- 将转换字符键入 int 以用作向量C++的索引
- 将字符随机转换为大写的函数
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 转换字符时Arduino DUE 和 Arduino UNO 之间的区别
- 如何在C++中正确重载运算符转换字符*?
- 如何转换数据结构以在 c++ 中转换字符*
- 不兼容的转换字符
- 将转换字符数组[16]键入为int 128位
- 在c++中转换字符编码
- 使用递归转换字符
- 如何在Objective-C/C/C++中转换字符和字节的位置
- C++到Pep/8汇编语言的转换——字符数组
- 转换字符>十六进制