• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

242
Views
¿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 3 years ago · Juan Pablo Isaza
1 answers
Answer question

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 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error