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

501
Vistas
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 Respuestas
Responde la pregunta

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 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