c++ - c++函数将十六进制字符串转换为uint8_t数组
问题描述
编写一个将十六进制格式的 c++ std::string 转换为 uint8_t 数组的函数的简单方法是什么?
例如:
#include <cstdint.h> //for uint8_t
#include <cstring.h> //for size_t
uint8_t output[64];
std::string input("EC83515650243FC512269A59CE0A82F4D4C92CD09F6037026BAA1A56AA97EBCB");
int ret = 0;
ret = hexStrToByteArray(input, output, sizeof(output));
如果您使用 C++17,则可以加分。
我认为函数 hexStrToByteArray 可以是这样的:
int hexStrToByteArray(std::string input, uint8_t * output, size_t outLen)
{
if(input.length()/2 != outLen)
{
return -1;
}
//TODO convert input into output
}
这似乎应该已经在堆栈溢出时得到了回答,但我只能找到以类似 c 的风格进行对话的答案,或者输出是向量而不是数组的答案。
解决方案
推荐阅读
- php - 没有附件的正文上的phpMailer图像
- angular - 在 angularjs 控制器中侦听来自 angular 4 组件的事件
- javascript - 会话变量不与嵌入式 PHP 共享
- java - 启动Tomcat服务器时如何使用命令行传递参数?
- python - 如何使用 Keras API 在 TensorFlow Eager 中将 dropout 应用于 RNN 的输出?
- reactjs - 在反应中渲染之前获取数据的最佳位置
- php - 创建一个 FPDF 然后通过 PHPMailer 或打印发送
- javascript - 运行与 wifi 自动连接的脚本
- php - 命名空间向后兼容 php
- sql-server - 在 SQL Server Management Studio 2017 中添加用户