如何在c++中将unicode字符串转换为hexa字符串

问题描述 投票:0回答:1

我有这个代码示例,其目的是在流中写入一些数据,以便我稍后可以再次读取它。

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 库非常不熟悉..

预先感谢您的任何提示!

c++ string unicode type-conversion hex
1个回答
0
投票

问题看起来您正在尝试将二进制数据转换为十六进制字符串。

您可以尝试以下方法来实现这一目标。

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;
© www.soinside.com 2019 - 2024. All rights reserved.