在Python中将一长串的位作为半字节转换为十进制

时间:2019-05-12 15:29:06

标签: python string binary

我有一个很长的位串(仅500位0和1)。如何将其转换为4组(即4位半字节)的十进制?

我尝试了以下方法,但没有用(根据here

with open("atb.bat","rb") as file:   # atb.bat is the file which contains the string
    data=file.read(4)
with open("out.txt","w") as f:
    f.write(" ".join(map(str,data)))
    f.write("\n")

我希望输出是125个整数,但最终只有4个十进制值!

我也尝试过类似的事情

p1 = 100000001111100101110011001101100110010 # (for example)
p22 =np.packbits(p1,axis=0)

但不起作用!

有什么想法吗?谢谢

2 个答案:

答案 0 :(得分:1)

您可以通过int(inputstring, 2)方法将字符串转换为0和1之外的字符串: Convert base-2 binary number string to int

因此,在您的长输入字符串上循环,取4个字符(您可以按照此处的说明Split string every nth character?进行操作),并将它们传递给int()方法。然后将输出连接/连接到loong输出字符串。

答案 1 :(得分:0)

nn = 4    
p12_ = [int(p1[i:i+nn],2) for i in range(0, len(p1), nn)]