estoy tratando de hacer un lfsr en js, en su cabeza todo se ve bien, estoy usando cadenas y las estoy convirtiendo de un lado a otro para obtener el último bit, mi problema es imprimir el número que estoy tratando de hacer un número hexadecimal grande, mi lógica es darme una semilla y una longitud y la función debería generar un número hexadecimal en esa longitud.
function lfsr(seed, length ){ var arr = Array.from(seed.toString(2)); result =""; for (var i = 0; i < lenght; i++) { let _last = parseInt(arr.pop()); let _blast = parseInt(arr[arr.length - 1]) let _newbit = _last ^ _blast; arr.splice(0 , 0 ,_newbit.toString()); result += _newbit.toString(); } return parseInt(result, 2).toString(16);este es mi código, realicé algunas pruebas y obtuve un buen resultado, pero cuando imprimo la respuesta, obtengo este resultado:
be92231350d87800000000000oh, y mi entrada es esta:
var ans = lfsr(6543123123798,100);¿Alguna idea de cómo deshacerme del exceso de 0 y obtener lo que necesito? gracias por tu tiempo.
He cambiado el código para que sea:
function lfsr(seed, length,base){ var arr = Array.from(seed.toString(base)); var result =""; for (var i = 0; i < length ; i++) { let _newbit = parseInt(arr.pop(),16) ^ parseInt(arr[arr.length - 1],base); arr.splice(0 , 0 ,_newbit.toString(base)); result += _newbit.toString(base); } return result; }y resolvió mi problema. cualquiera es bienvenido a usarlo.