Analyse du tampon du programme WeChat Mini

不言
Libérer: 2018-06-27 15:12:39
original
2741 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. 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);
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 - 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())
Copier après la connexion

clip. slice(buffer2)

buf.slice([start[, end]])
Copier après la connexion

  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
Copier après la connexion

longueur.longueur

buf.length;
Copier après la connexion

//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!

É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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!