[Python-ideas] Exact integral types in struct

Andrew Svetlov andrew.svetlov at gmail.com
Tue Mar 20 21:36:02 CET 2012


Sorry, my fault.
But as you can see json lib switches byteorder manually - so it's not an error.
Obviously it will be cleaner to use direct '>d' form.
Please make an issue in bugtracker if you want.
On Tue, Mar 20, 2012 at 10:27 PM, Serhiy Storchaka <storchaka at gmail.com> wrote:
> 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?'
>>> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas

-- 
Thanks,
Andrew Svetlov


More information about the Python-ideas mailing list

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