我有这个代码示例,其目的是在流中写入一些数据,以便我稍后可以再次读取它。
std::ostringstream oss;
int a = 10;
oss.write((char*)&a, sizeof(int));
a = 5;
oss.write((char*)&a, sizeof(int));
// etc...
std::cout << oss.str();
我正在尝试对这个示例进行单元测试,这就是我想操作一些可理解的数据的原因。
问题是 oss.str() 似乎返回一串 unicode 数据,例如:“\u0000\u0000\u0000@\u000a�#<\u0000\u0000�?"
我想在十六进制格式的字符串(例如“x0a x80 x3f x3c”)下检索这个 int 字符串,但我不知道如何做到这一点。我对 std 库非常不熟悉..
预先感谢您的任何提示!
问题看起来您正在尝试将二进制数据转换为十六进制字符串。
您可以尝试以下方法来实现这一目标。
std::string binaryData = oss.str();
std::ostringstream hexStream;
hexStream << std::hex << std::setfill('0');
for (unsigned char byte : binaryData) {
hexStream << "\\x" << std::setw(2) << static_cast<int>(byte);
}
std::cout << hexStream.str() << std::endl;