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