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

306
Vistas
hashmap en los objetos Buffer parece estar mal, ¿por qué?

Hay dos objetos de búfer diferentes (valores diferentes) en un JavaScript, pero en el objeto de JavaScript, se tratan como iguales. ¿Alguna idea de por qué? ¿Cómo obligarlos a que sean claves diferentes para un JavaScript? Gracias

mi versión de node.js es 10.15.1 en Ubuntu 18.04.

 var buf1 = Buffer.from([ 10, 33, 45, 77, 10, 33, 46, 166, 140, 190, 5, 241 ]); var buf2 = new Buffer.from([ 10, 33, 45, 77, 10, 33, 46, 168, 215, 216, 5, 241 ]); let a = {}; a[buf2] = "jon"; console.log(a[buf1]); //output jon
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

a[buf2] es equivalente a a[buf2.toString()] , que es equivalente a a[buf2.toString('utf-8')] , que es la causa de su problema: sus búferes no contienen UTF válido -8 datos, por lo que al convertir a una cadena UTF-8, los puntos de código no válidos se reemplazan por el carácter de reemplazo Unicode, U+FFFD (codificado como 0xEF 0xBF 0xBD en UTF-8).

Para mostrar esto, puede ejecutar el siguiente código:

 console.log('buf1', Buffer.from(buf1.toString()).toString('hex')); console.log('buf2', Buffer.from(buf2.toString()).toString('hex'));

El resultado es la representación hexadecimal de cada búfer tal como se usa como "nombre" de propiedad (caracter de reemplazo resaltado):

 buf1 0a212d4d0a212eefbfbdefbfbdefbfbd05efbfbd ^^^^^^^^^^^^^^^^^^ ^^^^^^ buf2 0a212d4d0a212eefbfbdefbfbdefbfbd05efbfbd

Como puedes ver, son equivalentes.

about 4 years ago · Juan Pablo Isaza Denunciar

0

a[buf2] = "jon"; es exactamente lo mismo que a['[object: Object]'] = "jon"; , debido a que la clave del objeto debe ser una string , si no es una string , se convertirá en una cadena usando el método toString .

Lo que querías hacer es:

 var buf1 = Buffer.from([ 10, 33, 45, 77, 10, 33, 46, 166, 140, 190, 5, 241 ]); var buf2 = new Buffer.from([ 10, 33, 45, 77, 10, 33, 46, 168, 215, 216, 5, 241 ]); let a = {}; a['buf2'] = "jon"; console.log(a[buf1]); //outputs undefined console.log(a['buf2']); // outputs "jon"
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