Maison  >  Article  >  Applet WeChat  >  Analyse du tampon du programme WeChat Mini

Analyse du tampon du programme WeChat Mini

不言
不言original
2018-06-27 15:12:392747parcourir

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"。

Écrire buffer.write()

var buf = new Buffer(200)
var len = buf.write("www.csdn.net")
console.log("写入字节数:" + len)

  • 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

  1. encoding - 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);

Fusionner Buffer.concat( [,])

var buf = new Buffer("北京")
var buf1 = new Buffer("上海")
var buf2 = Buffer.concat([buf,buf1],12)
console.log(buf2.toString())

  • 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 + "之后");
}

copy.compare(buffer2)

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

  1. targetBuffer - l'objet Buffer à copier.

  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())

clip. slice(buffer2)

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

  1. start - nombre, 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 que 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

longueur.longueur

buf.length;

//Renvoie le nombre d'octets de ce buffer. 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 représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

À propos du transfert dynamique de paramètres des mini-programmes WeChat

À propos du traitement asynchrone des mini-programmes WeChat programmes

Introduction au stockage de données, au passage de paramètres et à la mise en cache des données dans le développement d'applets WeChat

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!

Déclaration:
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