[C++11]_[初级]_[十六进制字符串转换为字节数组]
场景
- 在开发使用加密算法
md5,sha256等
的功能时, 会生成基于十六进制的字符串密钥。 这时候在使用这些密钥进行解密或加密的时候,第三方库都需要传入一个字节数组usigned char*
格式的数组,它每个字节的高4位和低4位都分别存储了1个字符值。那么用C++
如何实现?
说明
-
举例子比如字符串
\"a3fd\"
,它有4个字符,那么它实际上只需要2
个字节就可以存储。每两个字符存储在一个字节里,分别对应着高低4位。所以\"a3fd\"
就是在内存里的结果是{0xa3,0xfd}
。 -
如果是使用
python
的话,bytes
类型的对象默认就有fromhex
方法,很方便,可惜C++
标准库没有这么方便的方法。bytes.fromhex(strData)
-
我们知道标准字符串
string
可以存储任意的字节数据0~0xff
, 它的size()
并不是遇到\\0
就会结束。所以可以使用s