python - 如何在 python 中翻转一个字节?

标签 python python-3.x

我正在尝试解码一个由反转字节组成的文件。 目前,我的代码读取并复制文件,但我想在写出副本之前编辑一些字节。以字符串格式打印文件的二进制文件后,它看起来像:

b'r\x00\x00\x00\x06\x00P\x00\x14\x00\x10\x00\x0e\x00P\x00\x15\x00)7\xf8y(=(\xdb(\x8e\x08\x00

……等等。我想像这样翻转读出为\x** 的字节:

\x01 →\x10 ,\x81 →\x18 ,\x40 →\x04 ,\xae →\xea

最佳答案

您想将字节的前 4 位与后 4 位交换。只需通过一些移位和掩码在列表理解中重建 bytes 数组:

>>> b = b'r\x00\x00\x00\x06\x00P\x00\x14\x00\x10\x00\x0e\x00P\x00\x15\x00)7\xf8y(=(\xdb(\x8e\x08\x00'

>>> bytes(((x<<4 & 0xF0) + (x >> 4)) for x in b)
b"'\x00\x00\x00`\x00\x05\x00A\x00\x01\x00\xe0\x00\x05\x00Q\x00\x92s\x8f\x97\x82\xd3\x82\xbd\x82\xe8\x80\x00"

关于python - 如何在 python 中翻转一个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43111877/

相关文章:

python - 为什么 JSONEncoder 不适用于命名元组?

python - NetworkX 反向循环节点

python - 如何以编程方式更改 Mac OS X 中的背景?

python-3.x - Python Dash 数据表 : Row selection Not working

python-3.x - 检查进程是否卡在 Jupyter iPython 笔记本中

python-3.x - 为什么python的for循环对于大输入如此非线性?

python - 过滤满足一组条件的多对多关系

Python:在哪里编译 RE?

python - 没有名为 pkg_resources.py2_warn pyinstaller 的模块

python-3.x - 你如何在 Python 中使用 matplotlib 使 x 轴通过 (0,0)?