[C++11]_[初级]_[十六进制字符串转换为字节数组]
Posted infoworld
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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
以上是关于[C++11]_[初级]_[十六进制字符串转换为字节数组]的主要内容,如果未能解决你的问题,请参考以下文章
[C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
[C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
[C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]