qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qemu: json: Fix parsing of integers >= 0x800000


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH] qemu: json: Fix parsing of integers >= 0x8000000000000000
Date: Mon, 23 May 2011 09:06:20 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Lightning/1.0b2 Thunderbird/3.1.10

On 05/23/2011 09:02 AM, Luiz Capitulino wrote:
On Mon, 23 May 2011 08:50:55 -0500
Anthony Liguori<address@hidden>  wrote:

The actual value of the alert will surprise you :-)

Integers in Javascript are actually represented as doubles
internally which means that integer constants are only accurate up
to 52 bits.

So really, we should cap integers at 32-bit :-/

Have I mentioned recently that I really dislike JSON...

NB, I am distinguishing between JSON the generic specification and
JSON as implemented in web browsers. JSON the specification has *no*
limitation on integers.

The spec has no notion of integers at all.  Here's the relevant text.
Note that the BNF only has a single entry point for numbers.  It does
not distinguish between integers and floating point numbers.  Also, the
only discussion of valid numbers is about whether the number can be
represented as a rational number.  I think the only way to read the spec
here is that *all* numbers are meant to be represented as floating point
numbers.

Python json works just fine:

import json
json.dumps(9223372036854775807)
'9223372036854775807'
json.loads('9223372036854775807')
9223372036854775807

Python integers use BigNumbers transparently when necessary. That's what happening here.

There's a strong treatment of Python's behavior at http://deron.meranda.us/python/comparing_json_modules/numbers

Regards,

Anthony Liguori




reply via email to

[Prev in Thread] Current Thread [Next in Thread]