将字符串转换为二进制序列

时间:2017-01-04 12:25:05

标签: python-2.7

我想将任何字符转换为其二进制表示形式(不像我现在的cuurent代码那样的字符串)它需要是一个二进制数字序列 之后,我将从我所做的每16位中获取并计算它们的总和  我不能使用numpy或任何其他包  这就是我现在所得到的

def checksum(st):
    data  = ' '.join(map(bin,bytearray(st)))
    binar = [data[i:i+16] for i in range(0, len(data), 16)]
    check = 0xffff
    for hex in binar:
        check += int(hex,2)
    return check

我当前的代码获取一个字符串(例如:'10100/01'),我想要将字符串的每16位求和,我需要将字符串转换为二进制数,然后将每16位加在一起

1 个答案:

答案 0 :(得分:0)

这可以回答你的问题,假设我理解得当。您的代码的前两行似乎没有达到您想要实现的目标,但也许您只是忘了提及某些内容。

总之。

def checksum2(st):
    dummy = 0xFFFF
    for count in xrange(0,len(st),2):
        dummy += ord(st[count])+ord(st[count+1])*256
    return dummy

此代码逐步执行字符串的每个第二个字符,并将一个char的值添加到下一个char的值乘以256,这将创建一个单词。如果您实际上不想创建正确的16位值而只想添加两个8位值,请删除*256。如果您需要big endian而不是little endian,那么只需将*256移到另一个ord()