怎么将16进制从std::stringstream数据流中取出并保存为byte数组
时间: 2023-12-03 20:43:03 浏览: 131
把十六进制的位串转化为byte数组
可以使用std::hex和std::setw来读取16进制数据并保存到byte数组中。
以下是一个示例代码:
```c++
#include <iostream>
#include <iomanip>
#include <sstream>
int main() {
std::stringstream ss;
ss << "0123456789ABCDEF"; // 16进制数据
const int length = 8; // byte数组长度
uint8_t bytes[length];
for(int i = 0; i < length; i++) {
int value;
ss >> std::hex >> std::setw(2) >> value; // 读取2个字符的16进制值
bytes[i] = value;
}
// 输出byte数组内容
for(int i = 0; i < length; i++) {
std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(bytes[i]) << " ";
}
std::cout << std::endl;
return 0;
}
```
输出:
```
01 23 45 67 89 AB CD EF
```
在这个例子中,我们将16进制数据写入到std::stringstream中,然后使用std::hex和std::setw来从数据流中读取16进制值,并将它们保存到byte数组中。最后,我们输出byte数组中的内容以确保正确读取。
阅读全文