تحويل وحدات البايت إلى أرقام النقطة العائمة في بايثون

StackOverflow https://stackoverflow.com/questions/5415

  •  08-06-2019
  •  | 
  •  

سؤال

لدي ملف ثنائي لدي تحليل و أنا باستخدام بيثون.هل هناك طريقة أن يأخذ 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@'

نصائح أخرى

فقط قليلا بالإضافة إلى ذلك, إذا كنت تريد تعويم العدد الناتج من فك الأسلوب بدلا من tuple الكتابة فقط

>>> [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