我想将任何字符转换为其二进制表示形式(不像我现在的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位加在一起
答案 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()
。