actionscript 3 - AS3 convert big number to base16 number -
i'm trying take string, turn number, turn number base16, , turn string.
here's have far:
var d:string = convertbase("123487032174829820348320429437483266812812"); function convertbase(inputinbase10:string):string { var = number(inputinbase10); var u = i.tostring(16); trace("i = " + i); trace("u = " + u); return dest; } and here's prints:
i = 1.23487032174829e+41 u = 16ae5514d07e12000000000000000000000 i'm trying u fill out way. know it's bigger number that.
be warned, not efficient solution, workable, given numbers aren't going long (very long mean thousands of decimal places). algorithm below implements long division using strings record long numbers , repeatedly divides result of previous division 16, while recording remainder result. gives solution of problem.
the code below in javascript (sorry, don't have compiler on machine), must trivial make more adding proper type tags:
var source = "123487032174829820348320429437483266812812"; function longdivision(divident, quotient) { var i, digits = [], dividentpart = 0, resultdigits = [], nextdigit; (i = 0; < divident.length; i++) { digits[i] = parseint(divident[i], 10); } = 0; { dividentpart = dividentpart * 10 + digits[i]; if (dividentpart >= quotient) { nextdigit = (dividentpart / quotient) | 0; resultdigits.push(nextdigit); dividentpart = dividentpart - nextdigit * quotient; } else if (resultdigits.length) { resultdigits.push(0); } i++; } while (i < digits.length); return { a: resultdigits.join(""), b: dividentpart }; } function decimaltohex(input) { var result = "", div; { div = longdivision(input, 16); result = div.b.tostring(16) + result; input = div.a; } while (input); if (!result) result = "0"; return "0x" + result; } decimaltohex(source); // '0x16ae5514d07e120126dfbcb3073fddb2b8c'
Comments
Post a Comment