Ho bisogno di trovare un modo per convertire un numero elevato in una stringa esadecimale in javascript. Subito dopo la mazza, ho provato myBigNumber.toString(16)
ma se myBigNumber
ha un valore molto alto (es. 1298925419114529174706173), allora myBigNumber.toString(16)
restituirà un risultato errato, che è semplicemente geniale. Ho provato a scrivere per propria funzione come segue:Convertire un intero grande in una stringa esadecimale in Javascript
function (integer) {
var result = '';
while (integer) {
result = (integer % 16).toString(16) + result;
integer = Math.floor(integer/16);
}
}
Tuttavia, un gran numero modulo 16 tutti ritorno 0 (I che questo problema fondamentale è la causa del problema con toString
ho anche provato a sostituire (integer % 16)
con (integer - 16 * Math.floor(integer/16))
ma che aveva. lo stesso problema.
ho già ricercati in biblioteca Big Integer JavaScript, ma che è un enorme plug-in per uno, problema si spera relativamente semplice.
Ogni pensiero quanto a come posso ottenere un risultato valido? Forse alcuni tipo di approccio divide et impera? davvero piuttosto bloccato qui.
Questo è un problema con i grandi numeri, non la conversione in _String_ '1298925419114529174706173 == = 1298925419114529174706170' –
Il tuo numero è molto più grande di javascript intero, vedi http://stackoverflow.com/questions/307179/what-is-javascripts-max-int-whats-the-highest-integer-value-a-number -can-go-t – bfavaretto
beh non è divertente. Se avessi una rappresentazione di base 10 del numero come una stringa, c'è un modo semplice per convertirlo in una stringa esadecimale? –