Python'long'对象没有'to_bytes'属性?

kra*_*r65 2 python long-integer

我试图使用从Python编写的一个比特币地址验证在这里:

这个片段给我带来了麻烦:

def decode_base58(bc, length):
    n = 0
    for char in bc:
        n = n * 58 + digits58.index(char)
    return n.to_bytes(length, 'big')
Run Code Online (Sandbox Code Playgroud)

我知道n是int或long,但是没有一个名为to_bytes的方法,所以我真的不明白这段代码是如何工作的?

有人知道这里有什么问题吗?我做错了什么,或者这个代码只是写错了?欢迎所有提示!

pts*_*pts 8

Python 2.7 intlong没有这个.to_bytes方法.Python 3.2 int有这个.to_bytes方法.

Python 2.x的解决方法:

>>> length = 10
>>> n = 123456789
>>> ('%%0%dx' % (length << 1) % n).decode('hex')[-length:]
'\x00\x00\x00\x00\x00\x00\x07[\xcd\x15'
Run Code Online (Sandbox Code Playgroud)

  • @Abhiped:`int(data.encode('hex'),16)` (2认同)