gpt4 book ai didi

c++ - python zlib 输出到 C++ 字符串

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:15 24 4
gpt4 key购买 nike

我正在尝试将 python zlib 的输出写入 C++ 字符串。这个问题与 Python zlib output, how to recover out of mysql utf-8 table? 非常相似然而,这里的不同之处在于我的 python 脚本生成一个 C++ 头文件,其中压缩数据应存储为字符串。但是,由于特殊字符和原始字节,我无法让 C++ 将其作为字符串读取。我无法将其写入文件然后再将其返回到 C++ 程序中的原因是因为这可能是一个驱动程序组件,因此不允许读取文件。这是我正在尝试的一个小例子。


compressed_string = zlib.compress("This is a huge string. Around 263KB")
fptr = open('my_header.h', 'w')

content = "#ifndef __HEADER_DEFS__\n\
#define __HEADER_DEFS__\n\
\n\
#include \n\
\n\
std::string binary_compressed = \"%s\" \n\
\n\
#endif" % compressed_string

fptr.write(content)
fptr.close()

但是,我正在压缩的字符串是一个巨大的数据,与我在此处给出的示例不同,因此我将屏幕截图添加到我在实际示例中获得的字符类型。

请看http://tinypic.com/r/1078lxw/7对于屏幕截图。谢谢

最佳答案

您需要escape the non-printable characters在字符串中使用八进制表示法。

例如,

import string
....
safe_string = ""
for ch in compressed_string:
if ch in string.printable and ch != '\\':
safe_string += ch
else:
safe_string += "\%o" % ord(ch)
content = ".....\"%s\" ...." % safe_string

(建议避免十六进制表示法,因为它可以是可变长度的,并且转义字符后面的可打印字符可能是合法的十六进制数字,这会破坏事情)

关于c++ - python zlib 输出到 C++ 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5305007/

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