【问题标题】:write individual bits to a file in python在python中将各个位写入文件
【发布时间】:2013-07-08 21:37:38
【问题描述】:

有没有办法在 python 中写入小于 1 字节的数据 即使我写了以 1 位表示的数字 0,文件大小也是 1(8 位)字节

我尝试了结构模块

file.write(struct.pack('b',0))

数组模块

import array
data1=array.array('B')
x=bin(0)[2:]
data1.append(int(0,2))
f2=open('/root/x.txt','wb')
data1.tofile(f2)

【问题讨论】:

  • 没有。一个字节是非空文件的最小大小。
  • 我要离开this link to a question about huffman encoding 在这里,因为 OP 在对已接受答案的评论中询问它,这是一个很好的例子,说明如何更好地利用只能写入字节的能力。跨度>

标签: python file byte bits


【解决方案1】:

不,你不能写少于一个字节。一个字节是计算机可以处理的不可分割的内存量。硬件无法处理小于 1 字节的数据单元(尽管字节的大小可能因机器而异)。文件系统也以块为单位处理数据,可能为 4KB,因此写入一位实际上会在磁盘上产生一个 4KB 的块。

另请参阅此问题的更一般版本:It is possible to write less than 1 byte to a file

【讨论】:

  • 但是霍夫曼编码如何使用更少的位来表示最常见的符号??
  • @user1604573 您可以传输一系列位,或者根据需要将一系列位保存到文件中,然后根据需要对它们进行解释,但您不能一次写入少于一个字节时间。没有什么能阻止你按位工作。如果你想在霍夫曼编码中存储像“hello”这样的东西,这些位看起来像这样:1010000110011100100110,分成字节1010000110011100100110。最后你会有两个额外的位。您可以通过指示要读取多少位或文件中有多少字符来解决此问题,并在开头使用数字。
猜你喜欢
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 2013-08-06
相关资源
最近更新 更多