2014-04-13 3 views
0

내가 사용하는 다른 파일에서 얻을 오류 코드는 다음과 같습니다은 ">>"기호는 파이썬 코드에서 무엇을 의미합니까 :지도 (문자, [X, X >> 8, Y])

Traceback (most recent call last): 
    File "C:\Anaconda\lib\site-packages\pyahoolib-0.2-py2.7.egg\yahoo\session.py", line 107, in listener 
    t.send_pk(consts.SERVICE_AUTHRESP, auth.hash(t.login_id, t.passwd, p[94])) 
    File "C:\Anaconda\lib\site-packages\pyahoolib-0.2-py2.7.egg\yahoo\auth.py", line 73, in hash 
    hs = md5.new(mkeystr+"".join(map(chr,[x,x>>8,y]))).digest() 
ValueError: chr() arg not in range(256) 

업데이트 : @ merlin2011 : 이것은 나를 혼란스럽게합니다. digest()

여기서 chr 뒤에 쉼표가 있습니다.이 코드는 hs = md5.new (mkeystr + "") join (map (chr, [x, x >> 8, y] I 단지지도 (위한 반복 가능한), X >> 8 X Y]를 모르는된다 CHR (I)

Return a string of one character whose ASCII code is the integer i. For example, chr(97) returns the string 'a'. This is the inverse of ord(). The argument must be in the range [0..255], inclusive; ValueError will be raised if i is outside that range. See also unichr(). 

그렇다면 : I는 doc.python.org에서 함수라고 생각 아직?

또한이 코드는 pyahoolib-0.2 auth.py 파일의 일부이기 때문에이 코드를 변경하고 싶지 않습니다. 하지만 모든 일을하기 위해 무엇을해야할지 모르겠습니다.

Python Wiki에서 :

+0

코멘트는 stackoverflow에서 개행을 지원하지 않습니다. 대신 질문을 업데이트하십시오. – merlin2011

답변

1

그것은 이진 오른쪽 운영자 시프트의

x >> y : 반환이 비트 xy 곳에서 오른쪽으로 이동. 이것은 정수 나누기 (\) x2**y에 의해 동일합니다. 경우 당신이 궁금해

0

오류 메시지가 chr256의 범위 0 안에 인수를 받아들이는 것을 의미하고 map 기능은 해당 범위를 벗어나는 값으로 호출 할 일으키는 것입니다.

+0

@PatrickA, 코드를 호출하는 경우 호출 한 인수를 확인해야합니다. – merlin2011

+0

@Christian : 그것 pyahoolib-0.2에서 야후 메신저 auth.py 파일입니다. 코드를 구축하고 다음 두 문자열을 비교하는 것 같다 : c.append ((bl & 0xff00) >> 8) mckystr = "".join (map (chr, mkey)) mrest = "".join (map (chr, c [4 :]) : c.append (bl & 0xff) mkey = c [: 4] leave = False xrange (5)의 y : hs = md5.new (mkeystr + "". join (map (chr, [x, x >> 8, y]))에 대한 은 xrange (0xFFFF)))).) digest() hs == mrest의 경우 : leave = True 휴식하는 경우 중단하는 경우 if y! = 0 : – PatrickA