Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

64-bit number encoding/decoding in msgpack does not work #37

Open
pingyuusa opened this issue Jul 14, 2016 · 4 comments
Open

64-bit number encoding/decoding in msgpack does not work #37

pingyuusa opened this issue Jul 14, 2016 · 4 comments

Comments

@pingyuusa
Copy link

Due to the limitation of javascript the way numbers are store, 64 bit integers can not represented correctly.

msgpack decodes a 64 bit number as ordinary javascript numeric type which is incorrect and looses precision.

n = "18446464814936021036"
x = [ 0xcf, 0xff, 0xff, 0x02, 0x04, 0x00, 0x00, 0xd8, 0x2c ]
a = msgpack.unpack(x)
a == 1844646481493602000 // not equal to n

unittest for this is incorrect too.

Need an alternate way to encode/decode 64 bit numbers to/from msgpack format

@bin-y
Copy link

bin-y commented Jun 18, 2020

64-bit numbers should be mapped to BigInt

@bin-y
Copy link

bin-y commented Jun 18, 2020

ping @pgriess @godsflaw

@godsflaw
Copy link
Contributor

Yeah, this should be solved with one of the BigInt packages. I'm very busy, but would be happy to take a PR.

@bin-y
Copy link

bin-y commented Jul 8, 2020

hi, I did write some code to implement this for my own use. But my implemention used BigInt type directly and ignored backward compatibility. Due to the compatibility issue, I think it won't be a good PR, but it could be a reference if you need. Here is my commit bin-y@bccf8a0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants