我将一个长度为480710171的0和1字符串转储到pickle
文件中,因为我以前在bitarray
中遇到过问题,并且想看看pickle是否可以解决我的问题。但是现在它的长度是285175。在
为什么?在
我想看看泡菜有没有什么限制,但我没有发现任何东西。。。如果有一个众所周知的原因,我可能没有使用正确的关键词。。。在
编辑:
您可以填充一个随机值的字符串b
,这样您就可以使用您喜欢的技术得到480710171的长度,也许类似于一个简单的for循环,指向480710171。我个人使用哈夫曼编码加密原始数据,但这将是一个很长的例子,我觉得在这里没有必要。
然后,我将字符串b
转储如下:
b = ""
for i in range(4807100171)
b += 0
import cPickle as pickle
pickle.dump(b, open("string.p", "wb"), pickle.HIGHEST_PROTOCOL)
这显然是一个整数溢出问题-请注意480710171减2**32等于512132875。不幸的是,二进制pickle格式表示字符串长度的方式是32位整数。使用文本pickle格式(协议版本0)似乎可以避免此问题,但是文本pickle通常较长,并且处理这种大小的字符串需要相当多的内存。我还没有真正测试过这个-我觉得我的电脑内存都不够用!在
如果这一个字符串是唯一被存储的东西,那么将字符串本身写入文件会简单得多。在
相关问题 更多 >
编程相关推荐