uint8_t为了可移植性,加密密钥以十六进制形式从数组中表示:
for(int i = 0; i < KEYSIZE; ++i)
std::cout << std::setw(2) << std::setfill('0') << std::hex << static_cast<int>(PrivateKey[i]);
由于十六进制的特性,每个信息字节由两个字符表示,即 从一个字节出来多达两个。如何正确将带有十六进制的字符串读入 uint8_t 数组以恢复原始字节信息?
我花了大约五个小时试图在表单中执行任务,reinterpret_cast<const uint8_t*>(publicKey.c_str())直到我意识到问题出在上述现象中,而不是代码的其他部分。但是和他们一起,如果有的话;)
例如,您可以使用std::from_chars():
结论: