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

514
Visualizações
Guardar datos hexadecimales en un archivo en NodeJS

Di que tengo una cuerda

 "020000009B020000C0060000"

y quiero convertirlo en una cadena de tal manera que si se guardó como un archivo y lo abrió en un editor hexadecimal, mostraría el mismo hexadecimal que ingresé. ¿Cómo hago esto? Nunca he tenido que usar buffers ni nada, pero al tratar de hacer esto aparentemente tuve que hacerlo, y realmente no sé lo que estoy haciendo.

(o si debería usar búferes en absoluto; he estado buscando durante horas y todo lo que puedo encontrar son respuestas que usan búferes, así que solo tomé sus ejemplos y, sin embargo, nada funciona)

Convertí la cadena hexadecimal en un búfer

 function hexToBuffer(hex) { let typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) { return parseInt(h, 16) })) return typedArray }

y esto pareció funcionar porque registrar hexToBuffer("020000009B020000C0060000").buffer lo que devuelve me dio esto:

 ArrayBuffer { [Uint8Contents]: <02 00 00 00 9b 02 00 00 c0 06 00 00>, byteLength: 12 }

que tiene el mismo hexadecimal que puse, por lo que parece estar funcionando bien, luego para convertir el búfer de matriz en una cadena, hice esto.

 let dataView = new DataView(buffer); let decoder = new TextDecoder('utf-8'); let string = decoder.decode(dataView)

solo para probar que funcionó, lo guardé en un archivo.

 fs.writeFileSync(__dirname+'/test.txt', string)

Al abrir test.txt en un editor hexadecimal, se muestran diferentes datos: 02000000EFBFBD020000EFBFBD060000

Si en cambio hago

 fs.writeFileSync(__dirname+'/test.txt', hexToBuffer("020000009B020000C0060000"))

luego obtengo los datos correctos, pero luego, si leo el archivo con fs y luego lo agrego, una vez más no son los mismos valores.

 let test = fs.readFileSync(__dirname+'/test.txt', 'utf8) let example2 = test+'example' fs.writeFileSync(__dirname+'/test.txt', example2)

ahora test.txt comienza con 02000000EFBFBD020000EFBFBD060000 en lugar de 020000009B020000C0060000 . ¿Qué debo hacer?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En primer lugar, puede utilizar el Buffer.from(string[, encoding]) para crear un búfer a partir de una cadena y, al mismo tiempo, especificar la codificación; en su caso, será "hex" :

 const b1 = Buffer.from("020000009B020000C0060000", "hex")

Ahora guárdelo en un archivo:

 fs.writeFileSync(path.resolve('./test'), b1)

Luego podemos verificar que el archivo contiene los mismos valores hexadecimales que en la cadena usando xxd en la línea de comando:

 $ xxd test 0200 0000 9b02 0000 c006 0000

¡Luciendo bien!

Ahora también podemos volver a leer el archivo en un búfer, asegurándonos de decirle que la codificación del archivo es "hex" nuevamente:

 const b2 = fs.readFileSync(path.resolve("./test"), "hex")

Finalmente, vuelva a convertirlo en una cadena con el método Buffer.toString():

 console.log(b2.toString()) // => "020000009b020000c0060000"
over 4 years ago · Santiago Trujillo 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