2017-12-11 1 views
0

문제가 있습니다. 이진수를 이중 전조 수로 변환하고 싶습니다.파이썬 struct.error : 'q'형식 코드의 범위를 벗어난 정수

몇 가지 검색 수 후, 나는 몇 가지 방법을 발견,하지만 여전히 문제는, 내가 "작은"숫자가 아닌 큰 사람 (더블 precission)를 주조 할 수 데, 여기 내 예제 코드입니다 :

print unpack("d", pack("q", 4631069437225598976))[ 0 ] 
print unpack("d", pack("q", 13829563286724542464))[ 0 ] 

첫 번째 문제는 없지만 다음 오류 설명과 함께 충돌합니다. 41.7274732 그리고 두 번째는해야한다 :

첫 번째 숫자는해야 -0.8899581

어떤 생각?

감사 오래 오래 서명에 대한 Q을 사용하여 많은

+0

나는 이미 하나 개의 솔루션 (이 최고의 하나입니다 있는지 확실하지 않습니다) 발견 : 인쇄 압축 풀기 ("> D", binascii.unhexlify ("BFEC7A8980000000에게")) [0] – josecgon

답변

0

, 대신 오래 오래 q는 출력을 줄 것이다 당신이 원하는 :

from struct import pack, unpack 

print unpack("d", pack("Q", 4631069437225598976))[ 0 ] 
print unpack("d", pack("Q", 13829563286724542464))[ 0 ] 

출력 :

41.7274742126 
-0.889958143234 

편집 :

o 그 큰 숫자는 동일한 오류를 줄 수 있기 때문에 우리는 단지 가장 중요한 비트 위치에 하나의 비트를 추가하고 있습니다.