如何将二进制数据硬编码为字符串

How to hard code binary data to string

本文关键字:编码 字符串 数据 二进制      更新时间:2023-10-16

我想在我的应用程序中测试序列化数据转换,当前对象存储在文件中并读取二进制文件并重新加载对象。

在我的单元测试用例中,我想测试此操作。由于文件操作成本高昂,我想在代码本身中对二进制文件内容进行硬编码。

我该怎么做?

目前我正在尝试这样,

std::string FileContent = "00000.........";

而且它不起作用。

你是对的,一个字符串可以包含'',但在这里你仍然从 const char* 初始化它,根据定义,它在第一个''停止。我建议您使用 uint8_t[] 甚至 uint32_t[](即不传递给 std::string (,即使第二个可能有多达 3 个字节的开销(但在源代码中更紧凑(。例如,X位图通常是存储方式。

另一种可能性是base64编码,它是可打印的,但需要(相对快速(解码。

如果真的想把const char[]放到std::string,先把指针转换为const char*,再用std::string的双迭代器构造函数。虽然std::string确实可以容纳'',但将二进制存储在字符串中在某种程度上是一种反模式,因此我没有给出确切的代码,只是提示。

以下内容应该可以满足您的需求,但可能不建议这样做,因为大多数人不希望std::string包含空字节。

std::string FileContent { "x00x00x00x00x00", 5 };