Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

274
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda