将二进制数据包转换为ASCII整数

时间:2019-02-09 23:50:17

标签: python visual-studio

我正在尝试遍历二进制代码包。我的输入是带有各种二进制数的文本文件(有些只是八位数,有些则是数百位数。我将二进制打包成8的数据包。我正在尝试编写将遍历二进制和任何地方的代码。 “ 1”存在,用相应的整数(128,64,32,16,8,4,2,1)枚举。我不知道如何转换二进制或枚举它。

我尝试使用int,但是,我认为我应该使用循环,而当我使用int时,它仅转换了前8位数字,而对其他数据包没有任何作用。

我无法用整数列表枚举二进制代码。但是,预期的结果是将读取文本文件并将二进制代码打包。二进制代码将循环访问,并且二进制中的“ 1”将发生相应的整数。然后,整数/整数包将转换为ASCII。一些文本文件(输入文件)包含可转换为单个字母的二进制文件,而其他文件则具有可转换多个句子的二进制文件,因此数据包的数量不同。

1 个答案:

答案 0 :(得分:1)

这是将8位零和一的字符串转换为二进制值的方法:

def main():
    packets = ["11111111", "10000000", "00000100", "00000010", "00000001", "00000000"]
    ascii = []
    for packet in packets:
        acc = 0
        for i in range(0, 8):
            if packet[7-i] == '1':
                acc += 1 << i
        ascii.append(acc)
    print ascii

结果: [255,128,4,2,1,0]

您可以使用chr()函数将ascii值转换为字符。这行代码将从上方获取结果ascii值列表,并将其转换为字符列表:

chars = [chr(i) for i in ascii]

考虑到我的示例数据包,您将得到奇怪的,无法打印的字符。