我在这里搜索了答案,但找不到答案或不理解。
我需要将std :: string(例如“ F1F2F3F4”)(8个字节)转换为字节\ xF1 \ xF2 \ xF3 \ xF4(4个字节)。
我思考我需要std::hex
,但是我对看到的例子感到困惑。转换后,我需要访问这些字节(作为char数组),以便可以将它们从EBCDIC转换为ASCII(但这是另一回事了)。
所以我认为应该是这样的:
somevariable << std::hex << InputString;
但是我应该使用什么作为变量?顺便说一下,InputString的长度可以在1到50左右之间。
我的编译器在Linux上是g ++ 4.8。
答案 0 :(得分:4)
一种简单(但有点天真)的方法是一次从输入字符串中获取两个字符,然后放入另一个字符串,然后将该字符串传递给std::stoi
(如果不这样做则传递给std::strtoul
std::stoi
)转换为整数,然后可以将其放入字节数组。
例如这样的东西:
std::vector<uint8_t> bytes; // The output "array" of bytes
std::string input = "f1f2f4f4"; // The input string
for (size_t i = 0; i < input.length(); i += 2) // +2 because we get two characters at a time
{
std::string byte_string(&input[i], 2); // Construct temporary string for
// the next two character from the input
int byte_value = std::stoi(byte_string, nullptr, 16); // Base 16
bytes.push_back(byte_value); // Add to the byte "array"
}