类型转换中的错误:Python

时间:2017-03-18 05:46:55

标签: python

我刚刚开始学习python,我收到了我写的函数的以下错误。我认为这是由于类型转换,但我不确定如何纠正。

我得到错误:

File "validate.py", line 23, in keygen
(array3[0]) = int(array2[0]) ^ int(array2[n-1],8)
ValueError: invalid literal for int() with base 10: '0xd4d745957e685d08L'

功能:

def keygen(array2):
    n = len(array2)
    array3[0] = int(array2[0]) ^ int(array2[n-1],8)
    i = 1
    while(i != n):
        array3[i] = array2[i] ^ array3[i-1]
        i = i + 1
    printarray(array3)

这里array2是一个十六进制值数组,如下所示:

 array2: [0xd4d745957e685d08L,
          0x9a542ff214aa011cL,
          0x1289806cf20e724L,
          0x20dd453feea65bf4L,
          0x209ab70c8a12a914L,
          0xa16cde82faf9de54L,
          0x99c60b68361506d4L,
          0x5b98ffaaf450a3d4L,
          0xe5c75e967b0bbbe9L]

array3是一个空数组,其中插入了新值。

1 个答案:

答案 0 :(得分:0)

由于array2包含十六进制值,因此必须使用int(array2 [0],16)将其转换为整数值。你需要从数组中删除尾随L或使用类似下面的内容。

mailgun