2016-10-13 1 views
1

저는 파이썬에서 암호화 기법을 연구하고 있습니다. 그래서 임의의 정밀도 숫자 (long)를 항상 사용합니다. 파이썬 2.7 사용하고 있습니다.파이썬에서 임의의 정밀도 숫자의 크기를 구하는 함수가 있습니까?

제 문제는 숫자의 가장 중요한 2 바이트 (16 비트)를 가져와 내가 삽입 한 패딩인지 확인해야한다는 것입니다. 나는 sys.getsizeof()을 시도했지만 전체 객체의 크기를 알려주고 2 바이트 밖에 남지 않을 때까지 숫자의 모든 몇 비트를 반복 할 수 있다고 추측하지만이 작업을 수행하는 데있어 파이썬적인 방법이 더 있습니까?

미리 감사드립니다.

+0

은 "처음 두 바이트 (16 비트) "는 가장 중요한 비트 또는 최하위 비트를 의미합니까? –

+0

@RoryDaulton이 문제를 해결하기 위해 질문을 편집했습니다. 나는 가장 중요한 의미였습니다. – adrianokw

답변

2

이 당신을 위해 그것을 수행해야합니다

>>> n = 1 << 1000 
>>> n.bit_length() 
1001 
>>> n >> (n.bit_length() - 16) 
32768L 
1

사용 long.bit_length()을. 예 :

% long.bit_length(1024L) 
11 

또는 :

% 1024L.bit_length() 
11 

는 "첫 번째는"의미 가정, 처음 2 바이트를 얻으려면 "최하위", 모듈 (16)을 사용

x = 123456789 
x % 2**16 
52501 
+0

오해해서 죄송합니다. 나는 가장 중요한 의미였습니다. 나는 그것을 반영하기 위해 질문을 편집했다. 어쨌든 고마워! – adrianokw