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

301
Visualizações
Nodejs Uint8Array, Uint16Array, Uint32Array

Estoy tratando de averiguar cómo trabajar con la representación del búfer en int. código sencillo

 var buffer = Buffer.alloc(4, 'a'); var interface16 = new Uint16Array(buffer); var interface8 = new Uint8Array(buffer); console.log(interface16); console.log(interface8);

¿Por qué el registro genera las mismas matrices (por valor y longitud)? Después de todo, estoy haciendo una representación de datos en forma de 1 y 2 bytes por entero. Al menos los manuales dicen que Uint8Array: toma 1 byte del búfer, que considero una secuencia de 0 y 1, en este caso 32 (4 * 8). Es decir, puedo aguantar el hecho de que será una matriz con 4 elementos. Pero Uint16Array toma 2 bytes para un entero, es decir, el número debe ser diferente y el tamaño de la matriz es 2. ¿En qué me equivoco y qué búfer pasar a estos constructores para ver visualmente la diferencia? Sospecho que, en cualquier caso, la matriz devuelta tendrá la misma longitud que la cantidad de bytes, o que se trata de cómo la consola genera la salida. Probablemente. Pero no hay suficiente conocimiento para entender por qué. Gracias por su atención.

PD: Si también recomienda alguna literatura que no haga estallar el cerebro directamente sobre este tema, sería genial.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

primero crea un búfer con 4 a dentro.

entonces llamas a esta función con el búfer:

el documento dice: new Uint16Array(object); Cuando se llama con un argumento de objeto, se crea una nueva matriz con tipo como si fuera el método TypedArray.from().

ver más: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from

crea una matriz de 4 uint16 usando cada byte del búfer

a = 0x61 = 97 obtienes cuatro 97.

aquí hay un desbordamiento de pila de un búfer exitoso para la conversión de uint16 convertir el búfer de nodejs a Uint16Array

about 4 years ago · Juan Pablo Isaza Relatório

0

En su ejemplo, ambas matrices escritas terminan teniendo 4 elementos, pero Uint8Array solo usa 4 bytes para representar su contenido, mientras que Uint8Array usa 8. Puede ver esto al inspeccionar la propiedad byteLength :

 var buffer = Buffer.alloc(4, 'a'); var interface16 = new Uint16Array(buffer); var interface8 = new Uint8Array(buffer); console.log('Uint16 length: %d', interface16.length); console.log('Uint16 byteLength: %d', interface16.byteLength); console.log('Uint8 length: %d', interface8.length); console.log('Uint8 byteLength: %d', interface8.byteLength);

Producción

Uint16 longitud: 4
Uint16 byte Longitud: 8
Uint8 longitud: 4
Uint8 byte Longitud: 4

Por lo tanto, los constructores de matrices tipificadas están creando matrices tipificadas con la misma cantidad de elementos que el búfer de origen, pero el constructor Uint16Array usa dos bytes en lugar de uno para cada elemento, llenando el byte de orden superior de cada elemento con cero.

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