gpt4 book ai didi

python - 使用比特流

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:48 24 4
gpt4 key购买 nike

我有一个 base64 编码的比特流,我想使用它。使用 base64.b64decode 解码后,我得到一个包含解码代码的字节对象(Py3k btw)。现在的问题是,我想通过按位操作处理该字节对象,例如移位、按位 等,但这是不可能的,因为它是一个字节序列。

有什么方法可以对解码后的代码使用二元运算吗?

最佳答案

尝试使用

list(bytestring)

例如。

>>> bstring=b"Hello World"
>>> list( bstring)
[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
>>>

如果你想要一个巨大的位域而不是所有那些八位字节

>>> from functools import reduce
>>> reduce(lambda x,y:(x<<8)+y,list(b"Hello World"))
87521618088882533792115812
>>> bin(_)
'0b100100001100101011011000110110001101111001000000101011101101111011100100110110001100100'
>>>

你没有说你是如何计算位数的,也许它们应该被反转

>>> reduce(lambda x,y:(x<<8)+y,list(b"Hello World"[::-1]))
121404708493354166158910792
>>> bits=bin(_)[2:]

并将字符串填充为偶数字节

>>> bits=bits.zfill(((len(bits)-1)//8+1)*8)
>>> bits
'0110010001101100011100100110111101010111001000000110111101101100011011000110010101001000'

将前6位转为int

>>> int(bits[:6],2)
25

然后是下面的4位

>>> int(bits[6:10],2)
1

关于python - 使用比特流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1863571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com