从文件中读取二进制数

时间:2015-05-01 05:11:52

标签: python

我试图从包含这种格式的二进制数列表的文件中读取: 0b1111; 0b1010; 0b0101 // 0b1110; 0b0010等。然后,我想追加由" //"分隔的每个部分。到列表。这些部分中的每一部分都应该变成一个列表,其中包含由";"分隔的部分中的所有数字。我终于得到了代码,但在修改完全不同且无关的代码并反转更改之后,现在它已经中断了。这是我目前使用的代码,因为在尝试解决问题之后我没有原始代码:

programLoad = open("programs.txt", "r")
programLoadList = programLoad.read()
programList = [p for p in programLoadList.split("//")]
programLoad.close()

for index in range(len(programList)):
    programList[index] = [int(n, 2) for n in programList[index].split(";")]

我不会把文件放在这里,因为它真的很大。但是,所有数字都遵循正确的格式,并且在运行时它会在列表理解上失败并出现错误" int base 2&#34的无效文字。

如果您需要更多信息来帮助我,我很乐意提供。

2 个答案:

答案 0 :(得分:1)

您可以在单个列表理解中执行此操作:

In [11]: [[int(b, 2) for b in line.split(";")] for line in program_list.split("//")]
Out[11]: [[15, 10, 5], [14, 2]]

答案 1 :(得分:0)

我认为这会奏效。只需将每个二进制表示形式视为字符串,并省略前两个字符并将剩余文本转换为整数。

programLoad = open("programs.txt", "r")
programLoadList = programLoad.read()
programList = [p for p in programLoadList.split("//")]
programLoad.close()

for index in range(len(programList)):
    print programList[index]
    programList[index] = [int(n[2:], 2) for n in programList[index].split(";")]

print programList