int 생성자를 사용하지 않고 파이썬에서 정수로 16 진수를 나타내는 문자열을 변환하려고합니다.16 진수를 Int로 파이썬 없음 Int 생성자
예를 들어내가 이것에 대해 갈 것이라고 어떻게
int("802",16)
을하지 않고 그
output = 2050
로 얻을 것 어떻게이
hexstring = "802"
를 받았다면? 다음은
int 생성자를 사용하지 않고 파이썬에서 정수로 16 진수를 나타내는 문자열을 변환하려고합니다.16 진수를 Int로 파이썬 없음 Int 생성자
예를 들어내가 이것에 대해 갈 것이라고 어떻게
int("802",16)
을하지 않고 그
output = 2050
로 얻을 것 어떻게이
hexstring = "802"
를 받았다면? 다음은
hexstring = "802"
L=len(hexstring)
def val(h_char):
# Note you need to extend this to make sure the lowercase hex digits are processed properly
return ord(h_char)- (55 if ord(h_char)>64 else 48)
def sumup(sum,idx):
global hexstring # global variables are not recommended
L=len(hexstring)
return sum + 16**idx*val(hexstring[L-idx-1])
output = reduce(lambda a,b:sumup(a,b),range(L),0))
위의 단지 설명과 range(L)
에 의해 생산 [0,1,2]
의 목록에 값을
프로세스를 추가하지 않습니다. 함수 호출 sumup(sum, idx)=sum+16^idx*h_digit_at_idx
이루어진다 목록에 기재된 각 idx
들어
. (^ is ** is exp
위에서)
h_digit_at_idx = ord(h_char)- (55 if ord(h_char)>64 else 48)
ord(h_char)
가 0,1...10,A,B,C,D,E,F
ord(h_char)-(55 if ord(h_char)>64 else 48
은 각 문자에 대해 0,1...10,11,12,13,14,15
생산 진수 문자 48,49...57,65,66,67,68,69,70
생산 .
마지막으로 reduce 함수의 마지막 인수는
왜 당신이 * 필요 *'int'을 피할 것 (초기 시작하는 합계 인)
0
입니까? – chepner@chepner : 사소한 대답을 막는 제약 조건이있는 일반적인 숙제 문제. –
'int()'의 작업을 직접 수행 할 수 있습니다. 즉,'(2 * 1) + (0 * 16) + (8 * 256)'의 구성 요소로 "802"구문을 분석 할 수 있습니다. –