给定std::string
类似的十六进制"09e1c5f70a65ac519458e7e53f36"
,我如何将其拆分为两位数的块并将其存储到一个std::vector<uint8_t>
?
我以块大小为单位逐步遍历字符串,但是我不知道如何将十六进制块转换为数字。到目前为止,这就是我所拥有的。
vector<byte> vectorify(string input, int chunk = 2)
{
vector<uint8_t> result;
for(size_t i = 0; i < input.length(); i += chunk)
{
int hex = input.substr(i, chunk);
// ...
}
return result;
}
#include <string>
#include <sstream>
#include <vector>
#include <iomanip>
int main(void)
{
std::string in("09e1c5f70a65ac519458e7e53f36");
size_t len = in.length();
std::vector<uint8_t> out;
for(size_t i = 0; i < len; i += 2) {
std::istringstream strm(in.substr(i, 2));
uint8_t x;
strm >> std::hex >> x;
out.push_back(x);
}
// "out" contains the solution
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句