php의 base_convert 함수와 비슷한 사용법을 가지고 있는 파이썬 함수입니다.
다음은 2004년 6월 27일 버전(revision 1)입니다. 0에 대한 출력이 빈 문자열로 나오는 버그가 있습니다.
convert_base=lambda N,A,B:(lambda n,v:''.join(map(lambda x:chr(x+(x>9 and 55 \ or 48)),[(v//n**k)%n for k in xrange(4*len(str(v)))]))[::-1].lstrip('0'))(B, \ reduce(lambda x,y:x*A+ord(y.upper())-(y<'A'and 48 or 55),str(N),0))#tokigun:-)
다음은 2004년 12월 1일 버전(revision 2)입니다. revision 1의 버그를 잡고 기능이 추가되었습니다.
convert_base=lambda N,A,B,P=0:(lambda v,n:''.join(map(lambda x:chr(x+(x>9 and 55 or 48)),[(v//n**k)%n for k in xrange(4*len(str(v)))]))[::-1].lstrip('0'))(reduce (lambda x,y:x*A+ord(y.upper())-(y<'A'and 48 or 55),str(N),0),B).zfill(P or 1)#:)
이 코드는 파이썬 코드로 파이썬 인터프리터가 필요합니다. 파이썬 인터프리터에서 위의 코드를 실행해서 함수를 선언한 후, 다음과 같이 바꾸고자 하는 문자열, 현재 진법, 나중 진법을 순서대로 인자로 넣으면 사용할 수 있습니다. 첫 인자는 항상 문자열일 필요는 없고, 진법은 2진법부터 36진법까지 가능합니다.
>>> convert_base(848288322387, 10, 36) 'ATP4YQMR' >>> convert_base('Atp4yqmR', 36, 10) '848288322387'
revision 2는 네 번째 선택 인자를 받습니다. 이 숫자는 반환하는 문자열의 최소 길이를 뜻하며, 이 길이보다 작을 경우 필요한 갯수만큼 문자열 앞에 0을 첨가합니다.
>>> convert_base(32767, 10, 16, 8) '00007FFF' >>> convert_base(32767, 10, 16, 2) '7FFF'