Explication détaillée d'exemples de Buffer dans l'applet WeChat

黄舟
Libérer: 2017-09-13 10:51:03
original
2854 Les gens l'ont consulté

Cet article présente principalement les informations pertinentes sur l'explication détaillée du tampon du programme WeChat Mini. Les amis qui en ont besoin peuvent se référer à

L'explication détaillée du tampon du programme WeChat Mini<.>

Le langage JavaScript lui-même n'a que des types de données chaîne, pas des types de données binaires.


Mais lors du traitement de flux comme TCP ou de flux de fichiers, des données binaires doivent être utilisées. Par conséquent, dans Node.js, une classe Buffer est définie, qui est utilisée pour créer une zone tampon spécifiquement pour stocker les données binaires.


Dans node.js, la classe Buffer est une bibliothèque principale livrée avec le noyau Node. La bibliothèque Buffer apporte une méthode de stockage de données brutes à Node.js, permettant à Node.js de traiter des données binaires. Chaque fois que vous avez besoin de traiter des données déplacées lors d'opérations d'E/S dans Node.js, il est possible d'utiliser la bibliothèque Buffer. . Les données brutes sont stockées dans des instances de la classe Buffer. Un Buffer est similaire à un tableau d'entiers, mais il correspond à un morceau de mémoire brute en dehors de la mémoire tas V8.

Créer un tampon


1.长度为10的实例
var buf = new Buffer(10)
2.通过给定的数组创建
var buf = new Buffer([10,20,30,40,50])
3.通过字符串创建
var buf = new Buffer("www.csdn.net","utf-8")
utf-8 是默认的编码方式
支持以下编码:"ascii", "utf8", "utf16le", "ucs2", "base64" 和 "hex"。
Copier après la connexion

Écrire buffer.write()


var buf = new Buffer(200)
var len = buf.write("www.csdn.net")
console.log("写入字节数:" + len)
Copier après la connexion
  • string - La chaîne à écrire dans le tampon.

  • offset - la valeur d'index à laquelle le tampon commence à être écrit, la valeur par défaut est 0.

  • length - le nombre d'octets écrits, par défaut buffer.length

  • encoding - l'encodage utilisé. La valeur par défaut est 'utf8' .

Cache read.toString()


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

console.log( buf.toString(&#39;ascii&#39;));    // 输出: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString(&#39;ascii&#39;,0,5));  // 输出: abcde
console.log( buf.toString(&#39;utf8&#39;,0,5));  // 输出: abcde
console.log( buf.toString(undefined,0,5)); // 使用 &#39;utf8&#39; 编码, 并输出: abcde
Copier après la connexion
  1. encodage - l'encodage à utiliser. La valeur par défaut est 'utf8' .

  2. start - Spécifie la position de l'index pour commencer la lecture, la valeur par défaut est 0.

  3. end - position de fin, par défaut à la fin du tampon.

Tampon vers JSON


var buf = new Buffer(&#39;www.runoob.com&#39;);
var json = buf.toJSON(buf);
console.log(json);
Copier après la connexion

Fusionner Buffer.concat([,] )


var buf = new Buffer("北京")
var buf1 = new Buffer("上海")
var buf2 = Buffer.concat([buf,buf1],12)
console.log(buf2.toString())
Copier après la connexion
  • list est une liste de tableaux d'objets Buffer utilisés pour la fusion.

  • totalLength spécifie la longueur totale des objets Buffer fusionnés.


Compare.compare(otherBuffer)

Introduit dans la version Node.js v0.12.2


var buffer1 = new Buffer("AVCX")
var buffer2 = new Buffer("ACVV")

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 + "之后");
}
Copier après la connexion

copy.compare(buffer2)


buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
Copier après la connexion
  1. targetBuffer - pour copier Objet tampon.

  2. targetStart - numéro, facultatif, par défaut : 0

  3. sourceStart - numéro, facultatif, par défaut : 0

  4. sourceEnd - nombre, facultatif, par défaut : buffer.length



var buf1 = new Buffer("beiJing")
var buf2 = new Buffer(8)
buf1.copy(buf2)
console.log("buf2 content:"+buf2.toString())
Copier après la connexion

slice(buffer2. )


buf.slice([start[, end]])
Copier après la connexion
  1. début - numéro, facultatif, par défaut : 0

  2. fin - nombre, facultatif, par défaut : buffer.length

Valeur de retour

Renvoie un nouveau tampon, qui pointe vers la même mémoire comme l'ancien tampon, mais est coupé du début à la fin de l'index.



var buf1 = new Buffer("beiJing")
var buf2 = buf1.slice(0,8)
console.log("buf2 content:"+buf2)
// beiJing
Copier après la connexion

longueur.longueur


buf.length;
Copier après la connexion
// Renvoie le nombre d'octets dans ce tampon. Notez qu'il ne s'agit pas nécessairement de la taille du contenu du tampon. length est la quantité de mémoire allouée par l'objet tampon, et elle ne changera pas à mesure que le contenu de l'objet tampon change.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal