首页 > 解决方案 > 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 的风格进行对话的答案,或者输出是向量而不是数组的答案。

标签: c++stringhex

解决方案


推荐阅读