Convertir números grandes a hexadecimal

Me ha surgido en una aplicación el tener que convertir números de 23 cifras a hexadecimal. La función nativa de velneo, numberToStringHex tiene un límite de rango int de 32 bits con signo (2147483648).

Probando con la api de javascript, la función toString(16) también debe tener una limitación, que no permite la conversión completa de números tan grandes.

Finalmente he conseguido hacerlo utilizando una función que he encontrado y que dejo aquí, por si a alguien le surge un caso parecido.

===================================================

function dec2hex(str){
    var dec = str.toString().split(''), sum = [], hex = [], i, s
    while(dec.length){
        s = 1 * dec.shift()
        for(i = 0; s || i < sum.length; i++){
            s += (sum[i] || 0) * 10
            sum[i] = s % 16
            s = (s - sum[i]) / 16
        }
    }
    while(sum.length){
        hex.push(sum.pop().toString(16))
    }
    return hex.join('')
}

===============================================

Un saludo

1 me gusta

Hola Roberto, gracias por el aporte.

Te pido si podés, pone el código en formato código para que se entienda más. Edita el post con el icono del lápiz y luego pegas tu código, lo seleccionas y cliqueas en la barra superior de donde escribis el post hay un icono así </>

Saludos
Matias de Rimatcom | Desarrollador Certificado 2021 | Consultoría Velneo

Perdón no me di cuenta. Corregido.

1 me gusta