> 文章列表 > [C++11]_[初级]_[十六进制字符串转换为字节数组]

[C++11]_[初级]_[十六进制字符串转换为字节数组]

[C++11]_[初级]_[十六进制字符串转换为字节数组]

场景

  1. 在开发使用加密算法md5,sha256等的功能时, 会生成基于十六进制的字符串密钥。 这时候在使用这些密钥进行解密或加密的时候,第三方库都需要传入一个字节数组usigned char*格式的数组,它每个字节的高4位和低4位都分别存储了1个字符值。那么用C++如何实现?

说明

  1. 举例子比如字符串\"a3fd\",它有4个字符,那么它实际上只需要2个字节就可以存储。每两个字符存储在一个字节里,分别对应着高低4位。所以\"a3fd\"就是在内存里的结果是{0xa3,0xfd}

  2. 如果是使用python的话,bytes类型的对象默认就有fromhex方法,很方便,可惜C++标准库没有这么方便的方法。

    bytes.fromhex(strData)
    
  3. 我们知道标准字符串string可以存储任意的字节数据0~0xff, 它的size()并不是遇到\\0就会结束。所以可以使用s