python - 在 Python 中对文件输入执行按位运算
问题描述
我在搞乱 Python 文件输入,我想到了将 .png 文件中的每个字节反转,并将其放入一个新文件中,只是为了看看效果会怎样。我的代码是
with open("BeginningImage.png","rb") as f_to:
with open("EndLocation.png","wb") as f_wr:
f = f_to.read()
f_wr.write(~f)
这会引发错误:
TypeError: bad operand type for unary ~: 'bytes'
. 当我摆脱按位补码时,代码按预期运行。遗憾的是,我无法找到发生此问题的任何来源。有谁知道为什么会发生这个错误,以及我是否可以做些什么来解决这个问题?提前致谢!
解决方案
按位运算适用于整数而不是字节。字节的行为更像字符串。字节中的每个元素都是一个无符号的 8 位整数。
https://wiki.python.org/moin/BitManipulation
像下面这样的东西应该可以工作。
with open("BeginningImage.png","rb") as f_to:
with open("EndLocation.png","wb") as f_wr:
f = f_to.read()
byts = bytes((~uint_8 for uint_8 in f))
f_wr.write(byts)
推荐阅读
- java - 如何在输出绑定中放置参数?命名参数“时间戳”没有值
- javascript - 处理 Node.js 中的嵌套 forEach
- android-studio - Kotlin,如何在 String.format 中使用“$”作为参数索引
- kotlin - 检查集合是否只有一个元素的漂亮方法
- tensorflow - TF-Ranking 将数据转换为 ELWC - ExampleListWithContext 表单
- azure - 获取 Azure 中托管服务中的实例列表
- database - Laravel 实际的行顺序
- c - Typedef 结构体实现
- javascript - 如何向引导导航栏添加功能
- python - 测量`torch.where`的时间时出现`UnboundLocalError`错误