提问人:LPo 提问时间:11/13/2023 更新时间:11/13/2023 访问量:76
如何在C++中将Unicode的字符串转换为Hexa的字符串
how to convert string of unicode to string of hexa in c++
问:
我有这个代码示例,它旨在在流中写入一些数据,以便我以后可以再次读取它。
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 ?”
我想在十六进制格式的字符串下检索这个 int 字符串,例如“\0x0a\0x80\0x3f\0x3c”,但我无法弄清楚如何做到这一点。我对 std 库很不熟悉。.
提前感谢您的任何提示!
答:
1赞
stratov
11/13/2023
#1
问题似乎您正在尝试将二进制数据转换为十六进制字符串。
您可以尝试按照以下步骤来实现这一点。
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;
评论
'\u0000'
"\0x0a\0x80\0x3f\0x3c"
'?'
'<'
int
oss.put(10)
oss.put(0x0a)