1
이 나는 비트 코인 주소 유효성 검사기를 작성하는 것을 시도하고있다, 그리고 나는 파이썬 2와 함께 작동하도록 노력하고, 3사용`bytes` 3
import codecs
from hashlib import sha256
digits58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
def to_bytes(n, length):
s = '%x' % n
s = s.rjust(length*2, '0')
s = codecs.decode(bytes(s, 'UTF-8'), 'hex_codec')
return s
def decode_base58(bc, length):
n = 0
for char in bc:
n = n * 58 + digits58.index(char)
return to_bytes(n, length)
def check_bc(bc):
bcbytes = decode_base58(bc, 25)
return bcbytes[-4:] == sha256(sha256(bcbytes[:-4]).digest()).digest()[:4]
if __name__ == '__main__':
print(check_bc('1111111111111111111114oLvT2'))
이 코드 실행 및 인쇄 True
한다 . 파이썬 2에서이 라인 대신, 오류 :
s = codecs.decode(bytes(s, 'UTF-8'), 'hex_codec')
오류 : 나는 'UTF-8'부분을 제거하면, 대신 파이썬 3으로 나누기
TypeError: str() takes at most 1 argument (2 given)
. 나는 모두 bytes
에 호출을 제거하면, 그것은 대신 bytes
를 호출하는 파이썬 3