Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

271
Vistas
¿Cómo puedo convertir de un búfer de Javascript a una cadena que solo contiene 0 y 1?

Así que actualmente estoy tratando de implementar el alg de huffman y funciona bien para decodificar y codificar. Sin embargo, almaceno los datos codificados de la siguiente manera.

El resultado de la función de codificación es una lista que contiene muchas cadenas formadas por 0 y 1 y todas tienen una longitud variable.

Si los guardara en un archivo txt normal, ocuparía más espacio, si los almacenara tal como están en un archivo binario, podría ser que, por ejemplo, una 'e' que tendría el código 101 se almacenaría en un 8 bits completos que parecen '00000101', lo cual es un desperdicio y no ocupará menos espacio de almacenamiento que el archivo txt original. Tomé todas las cadenas de la lista y las puse en una cadena y la dividí en partes iguales de longitud 8 para almacenarlas de manera más efectiva.

Sin embargo, si quiero leer los datos ahora, en lugar de 0 y 1 obtengo caracteres utf-8, incluso algunos caracteres de escape.

Estoy leyendo el archivo con fs.readFileSync("./encoded.bin", "binary"); pero javascript piensa que ya es un búfer y lo convierte en una cadena y se vuelve extraño ... ¿Alguna solución o idea para volver a convertirlo en 0 y 1?

También traté de cambiar el "binario" en fs.readFileSync("./encoded.bin", "binary"); a un "utf-8" que me ayudó a no colapsar mi terminal pero sigue siendo "#��C��Ʃ�� ��y�Kf�g��<�e�t"

Para aclarar, mi objetivo al final es leer la cadena masiva de datos binarios que se vería así "00011001000101001010" y convertir esto en una cadena...

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede convertir una String de 1 s y 0 s a la representación numérica de un byte usando Number.parseInt(str, 2) y para volver a convertirla, puede usar nr.toString(2) .

Todo el proceso se verá así:

 const original = '0000010100000111'; // Split the string in 8 char long substrings const stringBytes = original.match(/.{8}/g); // Convert the 8 char long strings to numerical byte representations const numBytes = stringBytes.map((s) => Number.parseInt(s, 2)); // Convert the numbers to an ArrayBuffer const buffer = Uint8Array.from(numBytes); // Write to file // Read from file and reverse the process const decoded = [...buffer].map((b) => b.toString(2).padStart(8, '0')).join(''); console.log('original', original, 'decoded', decoded, 'same', original === decoded);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda