0

我有一段简单的 Python 代码,我想在其中对两个十六进制字符串进行异或运算并将结果取消十六进制,如下所示

def _xor(s1, s2):
    return hex(int(s1, 16) ^ int(s2, 16))[2:]

if __name__ == "__main__":

    print(unhexlify('11b407ef4f01534a138a8599545dc3c943535dac95477d7f1334fec85408197c'))
    print(unhexlify('199de3b1e4da5664d045d9f07d75d22eb853e875c788147f1db811bebe8c4282'))
    result = _xor('11b407ef4f01534a138a8599545dc3c943535dac95477d7f1334fec85408197c', '199de3b1e4da5664d045d9f07d75d22eb853e875c788147f1db811bebe8c4282')

    print(result)

    print(unhexlify(result))

除非我在传递给 unhexlify 之前用零填充结果,否则这将失败。我可以检查结果是偶数个字符,如果不是用零填充吗?

我想我想知道为什么我的 xor 函数在没有零的情况下返回。为什么 hex 函数返回的内容和 unhexlify 之间存在脱节?

谢谢

4

0 回答 0