从Ascii转换为十六进制,然后求和数字的结果

时间:2018-04-14 14:47:53

标签: python

我们必须编写一个带字符串并返回数字的函数。

首先应将字符串的每个字符转换为其ascii代码的十六进制值。结果应该是十六进制字符串中数字的总和(忽略字母)。

我们正在努力将ascii转换为hex ..

这是我们到目前为止所拥有的

def hex_hash(code):
# ascii to hex
# remove all the letters
# return the sum of the numbers 

#code.encode('hex')
#code.hex()

#code = hex(code)

code = code.fromascii(code).encode('hex')

sum = 0

for i in code:
    if i.isdigit():
        sum = sum + i 
return sum

2 个答案:

答案 0 :(得分:1)

def hex_hash(s):
    h = ''.join(str(hex(ord(x))) for x in s)
    return sum(int(x) for x in h if x.isdigit())

样本用法:

>>> def hex_hash(s):
...     h = ''.join(str(hex(ord(x))) for x in s)
...     return sum(int(x) for x in h if x.isdigit())
... 
>>> 
>>> hex_hash('Yo')
20
>>> hex_hash("Hello, World!")
91

答案 1 :(得分:0)

\n

示例输入:

def func(s):
    sm = 0
    for i in s:
        a = hex(ord(i))
        for j in a:
            if j.isdigit():
                sm += int(j)
    return sm

编辑: >>> func("Hello, World!") 91 部分

的说明

hex(ord(i))给出该字符的ASCII值,例如:

ord(x)

>>> ord('A') 65 >>> ord('0') 48 返回整数的十六进制字符串表示形式:

hex(x)