gpt4 book ai didi

c++ - 在 xml 中存储 C++ 二进制输出

转载 作者:行者123 更新时间:2023-11-27 23:24:30 27 4
gpt4 key购买 nike

根据 xsd,支持的二进制类型是 hexbinary 和 base64 编码的二进制数据。 http://www.w3schools.com/schema/schema_dtypes_misc.asp

我的目的是从内存中读取原始字节内容并将其序列化为 xml 文件。因此,上面哪种数据类型将描述原始字节内容,或者我是否必须确保将原始字节内容转换为十六进制以符合上述 2 种数据类型之一?

最佳答案

您必须将原始二进制文件转换为十六进制(或 base64)表示形式。例如,如果字节的值为 255(十进制),则它的十六进制表示(作为字符串)将为“ff”。

用于存储原始输入的(常规)类型是 unsigned char,因此您可以轻松地逐字节获取 0-255 的范围,但是对于该数组的每个字节,您需要在一个 signed char 中有两个字节(或 std::string) 类型来存储表示,这就是您在 XML 中使用的内容。

您的框架可能有一种将原始字节转换为 Base64 或十六进制的方法。如果没有,这里是十六进制的一种方法:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main (void) {
ostringstream os;
os.flags(ios::hex);

unsigned char data[] = { 0, 123, 11, 255, 66, 99 };

for (int i = 0; i < 6; i++) {
if (data[i] < 16) os << '0';
os << (int)data[i] << '|';
}

string formatted(os.str());

cout << formatted << endl;

return 0;
}

输出:00|7b|0b|ff|42|63|

关于c++ - 在 xml 中存储 C++ 二进制输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10335979/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com