【问题标题】:how to get Binary (1010) of a file如何获取文件的二进制(1010)
【发布时间】:2018-10-15 11:42:12
【问题描述】:

我需要获取文件的纯二进制文件。从纯二进制我的意思是

1010101010

我试过这个:

with open('img.jpg', 'rb') as file:
    print(file.read())

这给了我以下输出:

d2$I\xa7\xf3\x196\x8d\xc8\x9cmS\xc7Z{L\xd8r\x89\x85\x1f\xf2\xd3\x07\x8fjd\x90\xa6P\x03\xb0\x1e\xb5,n\xb0\xafo~\xf4\x

我不需要这个,因为我正在处理文件的二进制文件。相反,我需要

101011110101010110101000000001010101011111010000011010010101

【问题讨论】:

  • 为什么需要这样做?
  • 我需要这个,因为我正在压缩数据,我的意思是 1,0 所以首先我需要查看 1,0 ,我已经制作了对我来说工作正常的算法,现在我需要一个真正的文件 1,0 未生成 1,0
  • 只处理字节。如果您想访问字节中的各个位,您可以使用按位运算符而不是低效的字符串文字(这可能会使您的数据大小爆炸 16 倍左右)。

标签: python python-3.x binary data-conversion


【解决方案1】:
with open('img.jpg', 'rb') as file:
    print("".join(bin(b)[2:] for b in file.read()))

为什么你需要这个超出了我的范围,因为计算机在 1s 和 0s 中工作,而不是在 "1"s 和 "0"s 中工作,通常在向人类表示二进制文件时,你会使用 @987654326 @al 或 hexidecimal。

【讨论】:

  • 先生,我需要 1010,因为我正在研究数据压缩,我需要 1,0 用于计算机而不是人类。
  • @ShahidKhan 运行长度编码?好的,但请记住,在“现实世界”中不会像这样完成。
【解决方案2】:

所以,这实际上是一回事。 \xa7 形式的字符被文件阅读器理解为表示 10100111

>>> bin(ord('\xa7')) # => 167

如果你想要二进制表示,特别是0s 和1s,你可以使用类似于我上面使用的东西来获取它,但是任何期望二进制的程序都应该使用实际的二进制字符,当通过 python 打印在屏幕上时,它看起来像 \xa7 或其他东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    相关资源
    最近更新 更多