Estoy trabajando con una matriz con una longitud desconocida. Estoy buscando una cadena con una longitud específica que se me proporcione en los dos primeros caracteres de la matriz. La matriz está llena de caracteres (valores hexadecimales) y puedo calcular la longitud de la primera cadena, pero no puedo obtener la cadena ni obtener la siguiente longitud de cadena.
Por ejemplo:
Búfer que me llega desde el servidor:
var client = new net.Socket(); var res = Buffer.alloc(1); client.on('data', function(data)){ res = Buffer.from(data); console.log(res); var resArray = Array.from(res); resolveCommand(resArray); }); <Buffer 03 53 65 60 05 68 65 6c 6c 6f>
Puedo calcular que la primera cadena tiene 3 caracteres y la segunda tiene 5 caracteres, pero por alguna razón no puedo separar las cadenas (el ejemplo anterior no coincide con la realidad, podría tener 956 caracteres). Necesito almacenar e imprimir las cadenas para su uso posterior.
abajo les dejo el codigo que no esta funcionando hasta ahora.
responseBar es una matriz de caracteres, por eso necesito convertirlo en una cadena.
calcNumb(hexToDecimal(lengthName) está calculando la longitud de la cadena y está funcionando. Lo doblo porque necesito un par de caracteres para la traducción.
const responseBar = ['0', '3', '5', '3', '6', '5', '6', '0', '0', '5', '6', '8', '6', '5', '6', 'c', '6', 'f'] function hexToDecimal(datalength){ return parseInt(datalength, 16); }; function calcNumb(numberBytes){ return Math.ceil((numberBytes * 6) /8); }; function resolveCommand(responseBar) { console.log(responseBar); var x = responseBar.toString(); console.log('flag 1'); for (var i = 0; i < responseBar.length - 1; i++) { console.log('flag 3'); console.log("valor de i: " + i); var temp1 = responseBar[i]; var temp2 = responseBar[i + 1]; var lengthName = temp1 + temp2; var numbers = (calcNumb(hexToDecimal(lengthName)) * 2); console.log("NUMBER: " + numbers); console.log('flag 3'); console.log(lengthName); } } resolveCommand(responseBar)