91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node.js?Buffer模塊的方法以及示例分析

發布時間:2022-01-06 13:09:34 來源:億速云 閱讀:134 作者:柒染 欄目:開發技術

Node.js Buffer模塊的方法以及示例分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

二進制流是大量的二進制數據的集合。由于通常情況下二進制流的大小挺大的,因此二進制流一般不會一起運送,而會在運輸前切分成小塊然后逐一發送。

當數據處理單元暫時不再接收其他數據流時,剩余的數據將會被保留在緩存中,直到數據處理單元準備好接收更多數據為止。

Node.js 服務器一般需要在文件系統中進行讀寫,而文件在存儲層面而言其實都是二進制流。除此之外,Node.js 還能與 TCP 流一起使用,讓 TCP 流在不可靠的互聯網絡上提供可靠的端到端字節流保障通信。

發送給接收者的數據流會被緩沖,直到接收者準備接收更多要處理的數據為止。這就是 Node.js 處理臨時數據部分的工作內容 ,在 V8 引擎外部管理和存儲二進制數據。

讓我們一起深入緩沖區(Buffer)的各種使用方法,了解更多有關它們的信息以及一起學習如何在 Node.js 程序中使用它們吧。

Node.js Buffer 的方法

Node.js 緩沖模塊的最大優勢,其實就是它是內置于 Node.js 中的,因此我們可以在任何我們想要使用它的地方使用它。

讓我們一起瀏覽一些重要的 Node.js 緩沖模塊的方法吧。

Buffer.alloc()

此方法將創建一個新的緩沖區,但是分配的大小不是固定的。當我們調用此方法時,可以自行分配大小(以字節為單位)。

const buf = Buffer.alloc(6)  // 這會創建一個 6 字節的緩沖區
console.log(buf) // <Buffer 00 00 00 00 00 00>

Buffer.byteLength()

如果我們想要獲取緩沖區的長度,我們只需調用 Buffer.byteLength() 就行了。

var buf = Buffer.alloc(10)
var buffLen = Buffer.byteLength(buf) // 檢查緩沖區長度
 
console.log(buffLen) // 10

Buffer.compare()

通過使用 Buffer.compare() 我們可以比較兩個緩沖區,此方法的返回值是 -1,0,1 中的一個。

譯者注:buf.compare(otherBuffer); 這一句調用會返回一個數字 -1,0,1,分別對應 buf 在 otherBuffer 之前,之后或相同。

var buf1 = Buffer.from('Harsh')
var buf2 = Buffer.from('Harsg')
var a = Buffer.compare(buf1, buf2)
console.log(a) // 這會打印 0
 
var buf1 = Buffer.from('a')
var buf2 = Buffer.from('b')
var a = Buffer.compare(buf1, buf2)
console.log(a) // 這會打印 -1
 
 
var buf1 = Buffer.from('b')
var buf2 = Buffer.from('a')
var a = Buffer.compare(buf1, buf2)
console.log(a) // 這會打印 1

Buffer.concat()

顧名思義,我們可以使用此函數連接兩個緩沖區。當然,就像字符串一樣,我們也可以連接兩個以上的緩沖區。

var buffer1 = Buffer.from('x')
var buffer2 = Buffer.from('y')
var buffer3 = Buffer.from('z')
var arr = [buffer1, buffer2, buffer3]
 
console.log(arr)
/* buffer, !concat [ <Buffer 78>, <Buffer 79>, <Buffer 7a> ] */
 
// 通過 Buffer.concat 方法連接兩個緩沖區
var buf = Buffer.concat(arr)
 
console.log(buf)
// <Buffer 78 79 7a> concat successful

Buffer.entries()

Buffer.entries() 會用這一緩沖區的內容創建并返回一個 [index, byte] 形式的迭代器。

var buf = Buffer.from('xyz')
 
for (a of buf.entries()) {
    console.log(a)
    /* 這個會在控制臺輸出一個有緩沖區位置與內容的字節的數組 [ 0, 120 ][ 1, 121 ][ 2, 122 ] */
}

Buffer.fill()

我們可以使用 Buffer.fill() 這個函數將數據插入或填充到緩沖區中。更多信息請參見下文。

const b = Buffer.alloc(10).fill('a')
 
console.log(b.toString())
// aaaaaaaaaa

Buffer.includes()

像字符串一樣,它將確認緩沖區是否具有該值。我們可以使用 Buffer.includes() 方法來實現這一點,給定方法根據搜索返回一個布爾值,即 true 或 false。

const buf = Buffer.from('this is a buffer')
console.log(buf.includes('this'))
// true
 
console.log(buf.includes(Buffer.from('a buffer example')))
// false

Buffer.isEncoding()

我們可能知道二進制文件必須進行編碼,那么如果我們要檢查數據類型是否支持字符編碼該怎么辦呢?我們可以使用 Buffer.isEncoding() 方法進行確認。如果支持,它將返回 true。

console.log(Buffer.isEncoding('hex'))
// true
 
console.log(Buffer.isEncoding('utf-8'))
// true
 
console.log(Buffer.isEncoding('utf/8'))
// false
 
console.log(Buffer.isEncoding('hey'))
// false

Buffer.slice()

buf.slice() 將用于使用緩沖區的選定元素創建一個新緩沖區 &mdash;&mdash; 對緩沖區進行切割時,將創建一個新緩沖區,其中包含要在新緩沖區切片中找到的項目的列表。

var a = Buffer.from('uvwxyz');
var b = a.slice(2, 5);
 
console.log(b.toString());
// wxy

Buffer.swapX()

Buffer.swapX() 用于交換緩沖區的字節順序。使用 Buffer.swapX() (此處 X 可以為 16, 32, 64)來交換 16 位,32 位和 64 位緩沖區對象的字節順序。

const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8])
console.log(buf1)
// <Buffer 01 02 03 04 05 06 07 08>
 
// 交換 16 位字節順序
buf1.swap16()
console.log(buf1)
// <Buffer 02 01 04 03 06 05 08 07>
 
// 交換 32 位字節順序
buf1.swap32()
console.log(buf1)
// <Buffer 03 04 01 02 07 08 05 06>
 
// 交換 64 位字節順序
buf1.swap64()
console.log(buf1)
// <Buffer 06 05 08 07 02 01 04 03>

Buffer.json()

它可以幫助我們從緩沖區創建 JSON 對象,而該方法將返回 JSON 緩沖區對象,

const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
 
console.log(buf.toJSON());
// {"type":"Buffer", data:[1, 2, 3, 4, 5, 6, 7, 8]}

關于Node.js Buffer模塊的方法以及示例分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

翁牛特旗| 报价| 六安市| 南充市| 三穗县| 柞水县| 安塞县| 白沙| 佛坪县| 若羌县| 临湘市| 平顶山市| 阳谷县| 吐鲁番市| 肇庆市| 任丘市| 望谟县| 集贤县| 大悟县| 怀来县| 龙里县| 西畴县| 留坝县| 阿坝| 甘泉县| 正宁县| 武清区| 长海县| 浦北县| 五华县| 胶南市| 黄冈市| 铁岭市| 石嘴山市| 边坝县| 潮州市| 阳信县| 武乡县| 嘉黎县| 遂昌县| 临潭县|