如何将一组十六进制数字作为字符串?

时间:2017-08-04 09:53:41

标签: python

我想根据另一个key来计算第10轮的key,如果ikk是一个字符串,它的效果非常好,那么如何将其转换为字符串?

def test():
    ##### ikk=  '000102030405060708090a0b0c0d0e0f'  ===> It works!!!
    ikk= 000102030405060708090a0b0c0d0e0f
    ik=str(ikk)
    data = [re.findall('..', item) for item in key.split('\n')]
    for item in data:
        if item:
            result = [int(x, 16) for x in item]
            print(result)
            result = keyScheduleRounds(result, 0, 10)
            tt=''.join(["%02x"%d for d in result])
            print(tt)

我发现错误:

ik= str(000102030405060708090a0b0c0d0e0f)                              ^
SyntaxError: invalid token

2 个答案:

答案 0 :(得分:1)

如果ikk是十六进制数(看起来像),请尝试这种方式:ikk = 0x000102030405060708090a0b0c0d0e0f。注意开头的0x将告诉python这是一个十六进制数,而不是十进制数。

答案 1 :(得分:1)

设置ik:

ik= bytearray.fromhex("000102030405060708090a0b0c0d0e0f").decode()

这会将十六进制转换为字符串。 完整代码如下。

def test():
    ik = bytearray.fromhex("000102030405060708090a0b0c0d0e0f").decode()
    data = [re.findall('..', item) for item in key.split('\n')]
    for item in data:
        if item:
            result = [int(x, 16) for x in item]
            print(result)
            result = keyScheduleRounds(result, 0, 10)
            tt=''.join(["%02x"%d for d in result])
            print(tt)