[Python-ideas] Exact integral types in struct

Serhiy Storchaka storchaka at gmail.com
Tue Mar 20 21:27:24 CET 2012


20.03.12 21:54, Andrew Svetlov написав(ла):
> Floating points from IEEE 754 doesn't depends from machine byte order
> and C double is always coded in 8 bytes as I know,

Full code:
def _floatconstants():
 _BYTES = binascii.unhexlify(b'7FF80000000000007FF0000000000000')
 if sys.byteorder != 'big':
 _BYTES = _BYTES[:8][::-1] + _BYTES[8:][::-1]
 nan, inf = struct.unpack('dd', _BYTES)
 return nan, inf, -inf
NaN, PosInf, NegInf = _floatconstants()
But in xdrlib.py:
 return struct.unpack('>d', data)[0]
And in pickle.py:
 self.append(unpack('>d', self.read(8))[0])
Test:
 >>> import struct
 >>> struct.pack('>d', 1)
 b'?\xf0\x00\x00\x00\x00\x00\x00'
 >>> struct.pack('<d', 1)
 b'\x00\x00\x00\x00\x00\x00\xf0?'


More information about the Python-ideas mailing list

AltStyle によって変換されたページ (->オリジナル) /