문제

구문 분석해야 하는 바이너리 파일이 있고 Python을 사용하고 있습니다.4바이트를 단정밀도 부동 소수점 숫자로 변환하는 방법이 있나요?

도움이 되었습니까?

해결책

>>> import struct
>>> struct.pack('f', 3.141592654)
b'\xdb\x0fI@'
>>> struct.unpack('f', b'\xdb\x0fI@')
(3.1415927410125732,)
>>> struct.pack('4f', 1.0, 2.0, 3.0, 4.0)
'\x00\x00\x80?\x00\x00\x00@\x00\x00@@\x00\x00\x80@'

다른 팁

약간의 추가 사항입니다. 튜플 대신 unpack 메소드의 출력으로 부동 소수점 숫자를 원하는 경우 다음을 작성하십시오.

>>> [x] = struct.unpack('f', b'\xdb\x0fI@')
>>> x
3.1415927410125732

더 많은 수레가 있으면 그냥 쓰십시오.

>>> [x,y] = struct.unpack('ff', b'\xdb\x0fI@\x0b\x01I4')
>>> x
3.1415927410125732
>>> y
1.8719963179592014e-07
>>> 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top