如何将二进制数据硬编码为字符串
How to hard code binary data to string
我想在我的应用程序中测试序列化数据转换,当前对象存储在文件中并读取二进制文件并重新加载对象。
在我的单元测试用例中,我想测试此操作。由于文件操作成本高昂,我想在代码本身中对二进制文件内容进行硬编码。
我该怎么做?
目前我正在尝试这样,
std::string FileContent = " 0 0 0 0 0.........";
而且它不起作用。
你是对的,一个字符串可以包含' '
,但在这里你仍然从 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 };
相关文章:
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 使用文件内容作为硬编码字符串
- 协议缓冲区字符串字段的文本编码
- 如何在 c++ 中读取用 utf-8 编码的 java unicode 字节字符串
- 硬编码字符串与强制转换为 PUCHAR 并打印到控制台时从控制台读取的字符串的结果不同
- 替换 Qt C++ 中编码字符串的"="
- 从相同的硬编码字符串文字初始化std::string和std::wstring
- C++ 避免 if 和硬编码字符串
- 将字节数组转换为编码字符串
- 如何在 openSSL 中将 DER 编码字符串的向量转换为 x509
- 在C++中加密硬编码字符串的最佳方法是什么
- 初始化 utf8 编码字符串 c++11
- 当使用L前缀(Visual C++编译器)时,如何#定义硬编码字符串
- 在空白字符上拆分 UTF-8 编码字符串,而无需了解 UTF-8 编码
- 为什么Debian和AS400给出不同的base64编码字符串
- 来自终端的Base64编码字符串
- C++ "cannot add two pointers" ,将硬编码字符串添加到 CString
- 处理std::wstring和std::string之间的UTF-8编码字符串
- 编码字符串和解码字符串的差异
- 需要帮助编码c++字符串增加ASCII值