Python:获取弦六角XOR两位数校验和



newbie在这里。

我试图获得字符串的六角XOR检查和校验;而且我有以下Python 2.7代码:

def getCheckSum(sentence):
    calc_cksum = 0
    for s in sentence:
        calc_cksum ^= ord(s)
    return str(hex(calc_cksum)).strip('0x')
print getCheckSum('SOME,1.948.090,SENTENCE,H,ERE')

现在,除了结果包含 0时,这可以作为一角钱工作。如果最终值是0220,则将仅打印2。我考虑过实施.zfill(2),但这仅适用于0之前的情况。因此不可靠。

任何解决方案可能是为什么,以及如何解决它?

不是最好的解决方案,而是起作用 -

def getCheckSum(sentence):
    calc_cksum = 0
    for s in sentence:
        calc_cksum ^= ord(s)
    return str(hex(calc_cksum)).lstrip("0").lstrip("x")

问题是,您正在删除" 0"one_answers" X"作为领导或落后。我将其更改为顺序lstrip

您也可以使用Regex re

您可以像这样使用str.format

>>> '{:02x}'.format(2)
'02'
>>> '{:02x}'.format(123)
'7b'

这将在格式化以显示两个数字时格式化为十六进制的整数。

对于您的代码,您只需执行return '{:02x}'.format(calc_cksum)

最新更新