我尝试使用 CPP 程序将长十六进制字符串拆分为单独的字节并将其存储在整数 vector 中。例如,我的输入字符串将类似于 09e1c5f70a65ac519458e7e53f36
,我的预期输出将类似于 09 e1 c5 f7....
。但我得到的输出类似于 0 e c f.....
。我只得到了一半的字节值。我已经引用了此链接以供引用([https://stackoverflow.com/questions/21365364/how-to-split-a-hex-string-into-stdvector]),我想在不使用 boost 库的情况下获得输出.
因此,我尝试了上面链接中提到的以下代码。
这是我的代码。
#include <iostream>
#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);
}
for (int i=0; i<out.size(); ++i)
std::cout << out[i] << ' ';
return 0;
}
我的预期输出将类似于 std::vector
最佳答案
本声明
strm >> std::hex >> x;
只能读取一个字符。
您可以将变量x
声明为例如类型uint16_t
uint16_t x;
strm >> std::hex >> x;
out.push_back(x);
并输出您可以编写的 vector 的元素
std::cout << std::setfill( '0' ) << std::setw( 2 ) << std::hex << ( uint16_t )out[i] << ' ';
关于c++ - 将长十六进制字符串解析为单独的字节并将其存储在 std::vector<unit_8> 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77096658/