Maison  >  Article  >  interface Web  >  tampon nodejs vers numéro

tampon nodejs vers numéro

WBOY
WBOYoriginal
2023-05-17 12:12:37792parcourir

Nodejs est une solution JavaScript back-end très puissante qui a été largement utilisée dans la programmation côté serveur. Le type Buffer est également l'une des fonctionnalités importantes de Nodejs.

Dans Nodejs, l'objet Buffer est principalement utilisé pour traiter des données binaires, il est donc généralement utilisé dans des scénarios tels que la communication réseau et la persistance des données (comme la lecture et l'écriture de fichiers).

Dans le travail réel, nous rencontrons souvent des scénarios où nous devons convertir des données de type Buffer en un type numérique en JavaScript, cet article présentera donc la solution à ce problème.

  1. Convertir un tampon en nombre décimal

Dans Nodejs, convertir une donnée binaire en nombre décimal est facile, utilisez simplement Utilisez simplement la méthode readInt de la classe Buffer. Les paramètres pris en charge par la méthode readInt incluent le nombre d'octets, le décalage et l'utilisation ou non d'entiers non signés.

Par exemple, pour une donnée de type Buffer de 8 octets, vous pouvez utiliser l'instruction suivante pour la convertir en nombre décimal :

let buffer = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF]); 
let number = buffer.readIntBE(0, 8); 
console.log(number); //输出为78187493520

Dans le code ci-dessus, le Buffer La méthode .from est utilisée pour convertir. Un objet Buffer d'une longueur de 8 octets est créé. Utilisez ensuite la méthode readIntBE pour le traiter en nombre décimal.

  1. Traiter le Buffer en un nombre hexadécimal

En plus de traiter les données du Buffer en un nombre décimal, vous pouvez également les traiter en un nombre décimal. Il est traité comme un nombre hexadécimal. Ceci peut être réalisé grâce à la méthode toString fournie avec Nodejs.

let buffer = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF]); 
let hex = buffer.toString('hex');
console.log(hex); // 输出为:1234567890abcdef
  1. Traitement des commandes big-endian et small-endian

Il convient de noter que lors du traitement des objets Buffer sous forme de nombres, les données doivent être considéré comme l'ordre des octets. Normalement, nous devons déterminer l'ordre des octets des données en fonction de la source et des besoins d'utilisation des données.

Dans Nodejs, vous pouvez utiliser les méthodes BE et LE courantes pour déterminer l'ordre des octets. BE fait référence à l'ordre big endian et LE fait référence à l'ordre small endian.

BE : stockez les données dans l'ordre de l'octet de poids fort à l'octet de poids faible, c'est-à-dire l'octet de poids fort en premier et l'octet de poids faible en dernier.
LE : stockez les données dans l'ordre de l'octet faible à l'octet élevé, c'est-à-dire l'octet faible en premier et l'octet élevé en dernier.

Par exemple, pour une donnée Buffer de 2 octets, l'une est BE et l'autre est LE :

let BE_Buffer = Buffer.from([0x12, 0x34]);
let LE_Buffer = Buffer.from([0x34, 0x12]);

console.log(BE_Buffer.readIntBE(0, 2)); // 输出为: 4660
console.log(BE_Buffer.readUIntBE(0, 2)); // 输出为: 4660

console.log(LE_Buffer.readIntLE(0, 2)); // 输出为: 4660
console.log(LE_Buffer.readUIntLE(0, 2)); // 输出为: 4660
  1. Summary
# 🎜🎜#La conversion d'une donnée de type Buffer en un type numérique en JavaScript est l'une des opérations couramment utilisées dans Nodejs. En utilisant différentes méthodes de décodage, l'ordre des octets, le caractère grand et petit des données et d'autres attributs des données peuvent être correctement identifiés et convertis en nombres, garantissant ainsi l'exactitude des données pendant la transmission, la sauvegarde, la lecture, etc.

Ce qui précède est la méthode de conversion du type Buffer en type numérique dans Nodejs présentée dans cet article. J'espère qu'elle pourra être utile à tout le monde.

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