Javascript: toString(36) for large integers
Asked Answered
S

2

9

15955067621307336078.toString(36); returns '3d7vzfy5k2as8' in Javascript because the large integer cannot be represented (the correct answer is '3d7vzfy5k29ou').

Does someone have a clever function that takes a large integer as a string and converts it to base 36?

Sewerage answered 26/11, 2012 at 21:38 Comment(4)
@Cameron: en.wikipedia.org/wiki/Base_36Schaffer
Actually, I get "3d7vzfy5k2a68" for 15955067621307336078..toString(36)Barrios
I tried writing my own base conversion function, but it stops working completely after a certain size. jsfiddle.net/SEZXq/1Voltammeter
@Barrios - The largest int that JavaScript supports is 9007199254740992. You're number is over that, so the answer you get is determined by how the implementation misbehave when there is overflow. See this thread.Inellineloquent
S
9

Use this BigInt class, which allows conversion of arbitrarily large integers to any arbitrary base between 2 and 95. Use the bigInt2str() method to perform the conversion.

Schaffer answered 26/11, 2012 at 21:53 Comment(1)
Thanks this worked great. bigInt2str(str2bigInt("15955067621307336078",10,0,0),36).toLowerCase();Sewerage
S
1

For anyone curious, today we are using https://github.com/MikeMcl/bignumber.js instead.

Sewerage answered 7/4, 2016 at 3:6 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.