如何在C++中将Unicode字符串转换为Hexa字符串

k2arahey  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(98)

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

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();

字符串
我正在尝试对这个示例进行单元测试,这就是为什么我想操作一些可以理解的数据的原因。
str()似乎返回一个Unicode数据字符串,例如:“\u0000\u0000\u0000@\u000a�#<\u0000\u0000�?”
我想检索这个字符串的int下的字符串十六进制格式,如'\0x0a\0x80\0x3f\0x3c”,而不是但我不知道如何管理做到这一点。
提前感谢任何提示!

cuxqih21

cuxqih211#

问题看起来像是你试图将二进制数据转换为十六进制字符串。
你可以试着跟着去做。

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;

字符串

相关问题