我有一个很长的位串(仅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)
但不起作用!
有什么想法吗?谢谢
答案 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)]