Python 快速脏二进制异或函数

Python 快速脏二进制异或函数,python,hash,binary,Python,Hash,Binary,又来了,哦,无情的神 我只是在寻找一种开始使用简单xor哈希函数的方法。由于以太网电缆被神秘地从楼上的路由器断开(再次),我有点无法访问我通常的来源。我离题了 我需要做的是能够将一个二进制字符串中的10位与下一个10位进行对折,并将它们相互对折。所以我在想 伪代码 Raw input = (binary string or S) Def function xor: Find Len of s Loop [0:9], [10:19] = xorcheck

又来了,哦,无情的神

我只是在寻找一种开始使用简单xor哈希函数的方法。由于以太网电缆被神秘地从楼上的路由器断开(再次),我有点无法访问我通常的来源。我离题了

我需要做的是能够将一个二进制字符串中的10位与下一个10位进行对折,并将它们相互对折。所以我在想 伪代码

Raw input = (binary string or S)
Def function xor:
    Find Len of s
    Loop
        [0:9], [10:19] = xorcheck
        Loop 
            Xor [0:] & [10]
        Return result 
    [0 +1:] & [10 + 1:]
Return loop to xorcheck and store the.returned result.            
                       Variable hash ,maybe)
If second [:] return "none"
Divide Len by ten,
If true add "1000000000"
Else Add 0
Check if Len is / 10
if true print hash
Else add 0, check Len /10
基本上,它的轻量级python脚本将创建二进制文件的散列。这里有几个例子,我已经看过了,但它们做得太多了,比如说把它变成十六进制。我真正需要的是函数xor二进制字符串,并输出结果和填充整个字符串的方法,因此字符数是10的倍数

我为问题的质量低劣道歉,因为我现在正在使用我的微型智能手机进行研究:'(

编辑更新 我已将检查员代码编辑为

   my_text = raw_input ()
''.join(bin(ascii)[2:] for ascii in [ord(char) for char in my_text])
def myHash(binary_encoded_ascii):
    answer = 0
    binstr = binary_encoded_ascii + '1'
    binstr += '0'*(20 - (len(bitstr) %20))
    for i in range(len(binstr)/20):
        s = binstr[20*i:20*(i+1)]
        s1,s2 = s[:10], s[10:]
        total += int(s1, 2) ^ int(s2, 2)
        return total
    print total

它似乎需要文本,但没有打印任何值。我如何才能让它输出结果,以便查看它是否真的在做任何事情。

阅读您的作业问题后:

首先,您需要将文本转换为字符ascii值的二进制编码:

''.join(bin(ascii)[2:] for ascii in [ord(char) for char in my_text])
这将为文本中的所有字符提供二进制编码的ascii值,然后可以将其传递给哈希函数

def myHash(binary_encoded_ascii):
    answer = 0
    binstr = binary_encoded_ascii + '1'
    binstr += '0'*(20 - (len(bitstr) %20))
    for i in range(len(binstr)/20):
        s = binstr[20*i:20*(i+1)]
        s1,s2 = s[:10], s[10:]
        answer += int(s1, 2) ^ int(s2, 2)
    return answer

这是一个formatotastrophe,我很抱歉学习了反勾号的方法,并且永远不会再输入代码!在反勾号之间输入代码(“`”。1”键的左侧)另外,
hash是一个非常不错的二进制哈希函数,内置于Python:)我尝试格式化您的伪代码。请校对一下,我现在只看一下代码,它返回一个“返回函数xorfunction line 7外的函数”,我要稍微修改一下。所以基本上我需要它做的是,将一个10位二进制块中的每一位与下一个10位块中相应的位frmo进行异或运算。此后,整个字符串需要填充,以便可以被10整除。但它至少需要加一点填充。这是一个简单的散列,但这正是分配问题所要求的。返回的错误已经修复。如果你可以发布一个必须实现的算法的链接,我可以看看。本质上,“下一个10位块”是什么意思?如果我有字符串
abcdefghijklmnopqrst
,那么10位块是
“abcdefghij”和“klmnopqrst”
还是其他什么?不再返回错误,也不返回值它不喜欢原始输入在函数内部,所以我在函数调用之前移动到,以便将输入设置为全局变量(这是正确的术语)。。。但我想我可能需要更改它返回在循环中找到的内容的方式/位置。好的,例如,我将输入“‎1111010111100111001 1010010110 1100100000111 0000010011 0011011001 11111 00010 111111 0100 1010011111 1101110101 10101111010 01111101110 1101010011 0010000001“且需要排除或”‎“1111010111”反对“1100111001”,以此类推。然后需要存储和输出这些值。@Anaryl:您使用的是哪个版本的python?py2k不应该关心
原始输入的位置。此外,如果将
raw_输入
置于函数外部,也可以将其作为参数传递