Latest web development tutorials

Node.js Buffer (буфер)

JavaScript язык сам по себе только типы строки данных, без двоичный тип данных.

Но при работе с потоками, как поток TCP или файл, вы должны использовать двоичные данные. Таким образом, в Node.js, определение класса буфера, который используется для создания какого-либо специального буфера для хранения двоичных данных.

В Node.js, класс буфера выделяется вместе с основной библиотеки узла ядра. библиотека Буфер Node.js приносит способ хранения данных позволяет сырой Node.js обрабатывать двоичные данные, всякий раз, когда вам нужно обрабатывать операции ввода / вывода для перемещения данных Node.js, когда можно использовать библиотеку буфера , Исходные данные хранятся в экземпляре класса Buffer. Буфер похож на массив целых чисел, но она соответствует сырым памяти вне кучи V8.


Создание класса Buffer

Класс Node буфера могут быть созданы несколькими способами.

Способ 1

Создание экземпляра длину буфера 10 байт:

var buf = new Buffer(10);

Способ 2

Благодаря данной создании массива Buffer Пример:

var buf = new Buffer([10, 20, 30, 40, 50]);

Способ 3

Создание экземпляра буфера с помощью строки:

var buf = new Buffer("www.w3big.com", "utf-8");

UTF-8 кодировка по умолчанию, кроме того, он также поддерживает следующие кодировки: "ASCII", "utf8", "utf16le", "ucs2", "base64" и "шестигранной".


Запись буфера

грамматика

Синтаксис узла буфер записи выглядит следующим образом:

buf.write(string[, offset[, length]][, encoding])

параметры

Параметры описаны ниже:

  • строка - строка буфер записывается.

  • Смещение - буфер индексов , чтобы начать запись, по умолчанию равно 0.

  • длина - количество записанных байтов, по умолчанию buffer.length

  • кодирование - кодирование используется.По умолчанию 'utf8'.

Возвращаемое значение

Возвращает размер фактического письма. Если буферное пространство, единственная часть строки записывается.

примеров

buf = new Buffer(256);
len = buf.write("www.w3big.com");

console.log("写入字节数 : "+  len);

Реализация указанного выше кода, выход:

$node main.js
写入字节数 : 14

Читает данные из буфера

грамматика

Узел чтения синтаксис буфер данных выглядит следующим образом:

buf.toString([encoding[, start[, end]]])

параметры

Параметры описаны ниже:

  • кодирование - кодирование используется.По умолчанию 'utf8'.

  • начать - начать чтение указанной позиции индекса, по умолчанию равно 0.

  • конец - конечное положение, по умолчанию это конец буфера.

Возвращаемое значение

Расшифровка данных буфера и возвращает строку, используя указанную кодировку.

примеров

buf = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
  buf[i] = i + 97;
}

console.log( buf.toString('ascii'));       // 输出: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5));   // 输出: abcde
console.log( buf.toString('utf8',0,5));    // 输出: abcde
console.log( buf.toString(undefined,0,5)); // 使用 'utf8' 编码, 并输出: abcde

Реализация указанного выше кода, выход:

$ node main.js
abcdefghijklmnopqrstuvwxyz
abcde
abcde
abcde

Буфер будет преобразован в объект JSON

грамматика

Узел буфера в JSON синтаксис функции объекта выглядит следующим образом:

buf.toJSON()

Возвращаемое значение

Возвращает объект JSON.

примеров

var buf = new Buffer('www.w3big.com');
var json = buf.toJSON(buf);

console.log(json);

Реализация указанного выше кода, выход:

[ 119, 119, 119, 46, 114, 117, 110, 111, 111, 98, 46, 99, 111, 109 ]

Буфер Объединить

грамматика

буфера узла в сочетании синтаксис выглядит следующим образом:

Buffer.concat(list[, totalLength])

параметры

Параметры описаны ниже:

  • список - массив объектов для буфера объединенного списка.

  • totalLength - по истечении заданного общей суммарной длины объекта буфера.

Возвращаемое значение

Возвращение нескольких членов объединенного нового объекта буфера.

примеров

var buffer1 = new Buffer('本教程 ');
var buffer2 = new Buffer('www.w3big.com');
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 内容: " + buffer3.toString());

Реализация указанного выше кода, выход:

buffer3 内容: 本教程 www.w3big.com

буфер сравнения

грамматика

Узел буфера сравнить синтаксис функции выглядит следующим образом, метод введен в Node.js v0.12.2 версии:

buf.compare(otherBuffer);

параметры

Параметры описаны ниже:

  • otherBuffer - по сравнению с Bufобъектов буфера в другой объект.

Возвращаемое значение

Она возвращает число , которое представляетЬиЕ ранее otherBuffer,или после того же.

примеров

var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);

if(result < 0) {
   console.log(buffer1 + " 在 " + buffer2 + "之前");
}else if(result == 0){
   console.log(buffer1 + " 与 " + buffer2 + "相同");
}else {
   console.log(buffer1 + " 在 " + buffer2 + "之后");
}

Реализация указанного выше кода, выход:

ABC在ABCD之前

буфер копирования

грамматика

Синтаксис узла буфера копирования выглядит следующим образом:

buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])

параметры

Параметры описаны ниже:

  • targetBuffer - Buffer объекты , которые вы хотите скопировать.

  • targetStart - цифровой, необязательный, по умолчанию: 0

  • sourceStart - цифровой, необязательный, по умолчанию: 0

  • sourceEnd - цифровой, необязательный, по умолчанию: buffer.length

Возвращаемое значение

Нет возвращаемого значения.

примеров

var buffer1 = new Buffer('ABC');
// 拷贝一个缓冲区
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log("buffer2 content: " + buffer2.toString());

Реализация указанного выше кода, выход:

buffer2 content: ABC

Буфер Crop

Синтаксис Node буфера культур выглядит следующим образом:

buf.slice([start[, end]])

параметры

Параметры описаны ниже:

  • старт - номера, необязательный, по умолчанию: 0

  • конец - цифровой, необязательный, по умолчанию: buffer.length

Возвращаемое значение

Возвращает новый буфер, он старый и указывают на тот же кусок буфера памяти, но исходить из индекса к местоположению конца разреза.

примеров

var buffer1 = new Buffer('w3big');
// 剪切缓冲区
var buffer2 = buffer1.slice(0,2);
console.log("buffer2 content: " + buffer2.toString());

Реализация указанного выше кода, выход:

buffer2 content: ru

длина буфера

грамматика

буфер узла синтаксис вычисления длины выглядит следующим образом:

buf.length;

Возвращаемое значение

Back Buffer память, занятую длины объекта.

примеров

var buffer = new Buffer('www.w3big.com');
//  缓冲区长度
console.log("buffer length: " + buffer.length);

Реализация указанного выше кода, выход:

buffer length: 14

Метод Справочное руководство

Ниже приведен список Node.js буфера модуль обычно используемый метод (Обратите внимание, что некоторые методы в старой версии нет):

Нет. Метод и описание
1 новый буфер (размер)
Назначают новый размер для размера буфера байт блок 8. Обратите внимание, что размер должен быть меньше, чем kMaxLength, в противном случае, он будет бросать исключение RangeError.
2 новый буфер (буфер)
Параметр Копирование данных в буфер, например буфер.
3 Новый буфер (ул [кодировка] )
Он выделяет новый буфер, который содержит строку, переданную в ул. кодирующая кодирования по умолчанию для 'utf8'.
4 buf.length
Возвращает количество байтов в буфере. Отметим, что это не всегда соответствует размеру буфера внутри содержимого. Длина буфера является объем памяти, выделенной объектом, он не изменяет буфер с содержимым объекта изменяется.
5 buf.write (строка [, смещение [, длина]] [, кодирование])
В соответствии с офсетных и офсетных параметров, указанных кодирования кодирования, записывает строку данных параметров буфера. смещения Смещение Значение по умолчанию равно 0, кодирование кодировка по умолчанию utf8. размер длина длина записываемых байтов строку. Возвращает тип номера, напишите номер восемь представляет собой поток байтов. Если буфер не хватает места, чтобы положить всю строку, она будет написана только лишь часть строки. Длина по умолчанию buffer.length - смещение. Этот метод писать некоторые символы не отображаются.
6 buf.writeUIntLE (значение, офсет, byteLength [ , noAssert])
Значение записывается в буфер, где он определяется смещение и byteLength, поддержка 48-разрядных вычислений, например:
var b = new Buffer(6);
b.writeUIntBE(0x1234567890ab, 0, 6);
// <Buffer 12 34 56 78 90 ab>
noAssert, когда значение истинно, больше не проверить достоверность и значение смещения. По умолчанию является ложным.
7 buf.writeUIntBE (значение, офсет, byteLength [ , noAssert])
Значение записывается в буфер, где она определяется смещением и byteLength, поддержка 48-разрядных вычислений. noAssert, когда значение истинно, больше не проверить достоверность и значение смещения. По умолчанию является ложным.
8 buf.writeIntLE (значение, офсет, byteLength [ , noAssert])
Значение записывается в буфер, где она определяется смещением и byteLength, поддержка 48-разрядных вычислений. noAssert, когда значение истинно, больше не проверить достоверность и значение смещения. По умолчанию является ложным.
9 buf.writeIntBE (значение, офсет, byteLength [ , noAssert])
Значение записывается в буфер, где она определяется смещением и byteLength, поддержка 48-разрядных вычислений. noAssert, когда значение истинно, больше не проверить достоверность и значение смещения. По умолчанию является ложным.
10 buf.readUIntLE (офсет, byteLength [, noAssert ])
чтение цифровой 48 или меньше поддержки. Когда noAssert верно, то смещение больше не убедитесь, что превышает длину буфера, по умолчанию является ложным.
11 buf.readUIntBE (офсет, byteLength [, noAssert ])
чтение цифровой 48 или меньше поддержки. Когда noAssert верно, то смещение больше не убедитесь, что превышает длину буфера, по умолчанию является ложным.
12 buf.readIntLE (офсет, byteLength [, noAssert ])
чтение цифровой 48 или меньше поддержки. Когда noAssert верно, то смещение больше не убедитесь, что превышает длину буфера, по умолчанию является ложным.
13 buf.readIntBE (офсет, byteLength [, noAssert ])
чтение цифровой 48 или меньше поддержки. Когда noAssert верно, то смещение больше не убедитесь, что превышает длину буфера, по умолчанию является ложным.
14 buf.toString ([кодировка [, начало [ , конец]]])
(По умолчанию 'utf8') возвращает строку декодируется в соответствии с типом параметров кодирования. Она будет основана на параметрах, передаваемых начало (по умолчанию 0) и конец (по умолчанию buffer.length) как диапазон значений.
15 buf.toJSON ()
Экземпляр Buffer в объект JSON.
16 ЬиЕ [индекс]
Получает или задает указанный байт. Возвращаемое значение представляет собой байт, поэтому допустимый диапазон возвращаемого значения является 0x00 до 0xFF шестнадцатеричном или десятичном 0-255.
17 buf.equals (otherBuffer)
Сравните два буфера равны, и если возвращает истину, в противном случае возвращает ложь.
18 buf.compare (otherBuffer)
Буфер сравнения двух объектов и возвращает число, которое представляет ЬиЕ ранее otherBuffer, или после того же.
19 buf.copy (targetBuffer [, targetStart [, sourceStart [, sourceEnd]]])
копия буфера, источника и назначения могут быть одинаковыми. targetStart Target Начало смещение и запуск источника sourceStart смещение по умолчанию равно 0. sourceEnd конечный источник положение смещения источника по умолчанию длина buffer.length.
20 buf.slice ([старт [, конец] ])
Вырезать объекты Буфер, в соответствии с началом (по умолчанию 0) и конец (по умолчанию buffer.length) смещение и индекс урожая. Отрицательный индекс рассчитывается с начала хвоста буфера.
21 buf.readUInt8 (смещение [, noAssert])
В соответствии с указанным смещением Считывает 8-битное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Если это смещение может быть вне конца буфера. По умолчанию является ложным.
22 buf.readUInt16LE (смещение [, noAssert])
В соответствии с указанным смещением с помощью специального порядка байтов формат порядка байтов Считывает 16-разрядное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
23 buf.readUInt16BE (смещение [, noAssert])
В соответствии с указанным смещением с помощью специального порядка байтов формат порядка байтов Считывает 16-разрядное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
24 buf.readUInt32LE (смещение [, noAssert])
В соответствии с указанным смещением с указанным форматом обратным порядком байтов порядка байтов Считывает 32-разрядное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
25 buf.readUInt32BE (смещение [, noAssert])
В соответствии с указанным смещением с указанным форматом обратным порядком байтов порядка байтов Считывает 32-разрядное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
26 buf.readInt8 (смещение [, noAssert])
В соответствии с указанным смещением, чтобы прочитать подписанный 8-разрядное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
27 buf.readInt16LE (смещение [, noAssert])
В соответствии с указанным смещением, используя специальный формат порядка байтов считывает подписанное 16-разрядное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
28 buf.readInt16BE (смещение [, noAssert])
В соответствии с указанным смещением, используя специальный формат порядка байтов считывает подписанное 16-разрядное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
29 buf.readInt32LE (смещение [, noAssert])
В соответствии с указанным смещением с указанным прямой порядок байтов порядка байтов считывает подписанное 32-разрядное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
30 buf.readInt32BE (смещение [, noAssert])
В соответствии с указанным смещением с указанным прямой порядок байтов порядка байтов считывает подписанное 32-разрядное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
31 buf.readFloatLE (смещение [, noAssert])
В соответствии с указанным смещением с указанным порядком байтов обратным порядком байтов для чтения формате с плавающей запятой 32-битный. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
32 buf.readFloatBE (смещение [, noAssert])
В соответствии с указанным смещением с указанным порядком байтов обратным порядком байтов для чтения формате с плавающей запятой 32-битный. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
33 buf.readDoubleLE (смещение [, noAssert])
В соответствии с указанным смещением с указанным форматом обратным порядком байтов порядка байтов для чтения 64-битные двойной. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
34 buf.readDoubleBE (смещение [, noAssert])
В соответствии с указанным смещением с указанным форматом обратным порядком байтов порядка байтов для чтения 64-битные двойной. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что смещение может быть вне конца буфера. По умолчанию является ложным.
35 buf.writeUInt8 (значение, смещение [, noAssert ])
По словам входящего смещения смещения буфера значение записи. Примечание: значение должно быть действительным подписано 8-разрядное целое число. Если параметр истинно noAssert не будет проверять смещение параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, не следует использовать. По умолчанию является ложным.
36 buf.writeUInt16LE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: значение должно быть действительным 16-разрядное целое число. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
37 buf.writeUInt16BE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: значение должно быть действительным 16-разрядное целое число. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
38 buf.writeUInt32LE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: значение должно быть действительным 32-разрядное целое число. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
39 buf.writeUInt32BE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: значение должно быть действительным 32-разрядное целое число. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
40 buf.writeInt8 (значение, смещение [, noAssert ])
41 buf.writeInt16LE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: значение должно быть действительным подписано 16-разрядное целое число. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
42 buf.writeInt16BE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: значение должно быть действительным подписано 16-разрядное целое число. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
43 buf.writeInt32LE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: значение должно быть допустимым знаковое 32-битное целое число. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
44 buf.writeInt32BE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: значение должно быть допустимым знаковое 32-битное целое число. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
45 buf.writeFloatLE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: Если значение не является значением типа с плавающей точкой в ​​32-битном, то результат не определен. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
46 buf.writeFloatBE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: Если значение не является значением типа с плавающей точкой в ​​32-битном, то результат не определен. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
47 buf.writeDoubleLE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: значение должно быть допустимым 64-битное значение типа Double. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
48 buf.writeDoubleBE (значение, смещение [, noAssert ])
В соответствии с входящим смещения смещения и указанный порядок байт значение формата буфера записи. Примечание: значение должно быть допустимым 64-битное значение типа Double. Если параметр noAssert истинное значение не будет подтверждено и смещения параметров смещения. Это означает, что значение может быть слишком большим, или смещение может превысить конец буфера результирующее значение отбрасывается. Если вы не очень уверены в этом параметре, или стараться не использовать. По умолчанию является ложным.
49 buf.fill (значение [, смещение] [ , конец])
Используя указанное значение для заполнения буфера. Если значение смещения (по умолчанию равен 0) и конец (по умолчанию buffer.length), будет заполнять весь буфер.