Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menukar penimbal kepada tatasusunan dalam nodejs

Bagaimana untuk menukar penimbal kepada tatasusunan dalam nodejs

PHPz
PHPzasal
2023-04-17 16:45:001843semak imbas

Objek penimbal selalunya digunakan dalam Node.js untuk input dan output data, tetapi dalam beberapa senario penimbal perlu ditukar kepada tatasusunan. Artikel ini akan memperkenalkan cara menukar penimbal kepada tatasusunan dalam Node.js.

Mengenai objek penimbal

Objek penimbal ialah objek dalam Node.js yang mengkhusus dalam memproses data perduaan Ia serupa dengan tatasusunan, tetapi ia menyimpan bait bukannya integer 32-bit . Pelaksanaan asas objek penimbal menggunakan C++ untuk meningkatkan kecekapan dan membolehkan pembacaan dan penulisan cepat aliran data.

Dalam Node.js, kami biasanya menggunakan objek penimbal untuk komunikasi rangkaian, operasi fail, dsb. Objek penimbal mempunyai pelbagai senario penggunaan dan ia boleh dianggap sebagai salah satu teras Node.js.

Mengenai tatasusunan

Dalam pengaturcaraan konvensional, tatasusunan ialah salah satu jenis data yang paling biasa digunakan. Jenis data yang berbeza boleh disimpan dan boleh dikendalikan dalam pelbagai cara, seperti menambah, memadam, mengubah suai dan menyemak.

Array juga merupakan salah satu jenis data yang paling biasa digunakan dalam JavaScript. Tatasusunan JS amat fleksibel Mereka boleh menyimpan jenis data yang berbeza, dan banyak kaedah pengaturcaraan berfungsi boleh digunakan untuk beroperasi pada tatasusunan.

Buffer to Array

Dalam Node.js, kita selalunya perlu menukar penimbal kepada tatasusunan untuk operasi. Berikut ialah beberapa cara untuk menukar penimbal kepada tatasusunan:

  1. Gunakan gelung for untuk melintasi penimbal, tukar setiap bait kepada nombor perpuluhan dan masukkannya ke dalam tatasusunan.
function buffer2Array1(buf) {
  const arr = []
  for (let i = 0; i < buf.length; i++) {
    arr.push(buf[i])
  }
  return arr
}
  1. Gunakan operator hamparan untuk menukar penimbal kepada tatasusunan.
function buffer2Array2(buf) {
  return [...buf]
}
  1. Gunakan fungsi peta untuk menukar penimbal kepada tatasusunan.
function buffer2Array3(buf) {
  return Array.prototype.map.call(buf, (x) => x)
}
  1. Gunakan fungsi dari untuk menukar penimbal kepada tatasusunan jenis Uint8Array.
function buffer2Array4(buf) {
  return Array.from(new Uint8Array(buf))
}

Antara kaedah di atas, kaedah pertama adalah yang paling mudah, tetapi ia sedikit tidak mencukupi dari segi prestasi. Kaedah kedua menggunakan operator penyebaran ringkas, yang meningkatkan prestasi berbanding kaedah pertama. Kaedah ketiga menggunakan fungsi Array.prototype.map ES5, yang mungkin lebih mudah dibaca, tetapi juga akan membawa beberapa kehilangan prestasi. Kaedah terakhir ialah menggunakan kaedah berkaitan ArrayBuffer untuk penukaran, yang menunjukkan prestasi yang agak lebih baik dari segi prestasi.

Contoh Demonstrasi

Dalam contoh mudah, anda boleh terus memanggil kaedah di atas untuk menukar penimbal kepada tatasusunan. Berikut ialah contoh aplikasi praktikal:

const fs = require('fs')

const fileName = 'test.txt'

fs.readFile(fileName, (err, data) => {
  if (err) {
    console.error(err)
    return
  }

  const arr1 = buffer2Array1(data)
  const arr2 = buffer2Array2(data)
  const arr3 = buffer2Array3(data)
  const arr4 = buffer2Array4(data)

  console.log(arr1)
  console.log(arr2)
  console.log(arr3)
  console.log(arr4)
})

Dalam kod ini, kami menggunakan modul fs Node.js untuk membaca fail, kemudian menukarnya kepada tatasusunan dan menghasilkan empat kaedah hasil.

Ringkasan

Objek penimbal ialah objek dalam Node.js yang pakar dalam memproses data binari dan tatasusunan ialah salah satu jenis data yang biasa digunakan. Dalam Node.js, kita selalunya perlu menukar penimbal kepada tatasusunan untuk operasi. Artikel ini memperkenalkan empat kaedah untuk menukar penimbal kepada tatasusunan, dan menunjukkan senario aplikasi sebenar dengan contoh.

Atas ialah kandungan terperinci Bagaimana untuk menukar penimbal kepada tatasusunan dalam nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn