Maison >interface Web >Questions et réponses frontales >Comment convertir les octets nodejs entre eux

Comment convertir les octets nodejs entre eux

PHPz
PHPzoriginal
2023-04-26 09:07:331117parcourir

Node.js est une plate-forme de développement populaire alimentée par le langage JavaScript et qui peut être utilisée pour créer de grandes applications Web hautement évolutives. Dans Node.js, le traitement des données binaires est très courant. Par conséquent, l'utilisation de Node.js pour effectuer une conversion d'octets est également un sujet très important.

Byte to HexString

Dans Node.js, convertir un tableau d'octets en chaîne hexadécimale est très simple. Nous pouvons utiliser la classe Buffer pour le traiter. Voici un exemple de code qui convertit un tableau d'octets en chaîne hexadécimale :

const buff = Buffer.from([0x12, 0x34, 0x56, 0x78]);
const hexString = buff.toString('hex');
console.log(`hexString: ${hexString}`);
// hexString: 12345678

La méthode Buffer.from accepte un tableau comme paramètre et renvoie une instance Buffer contenant ces octets. Nous pouvons lui transmettre une instance Buffer vide d'une longueur spécifiée, puis utiliser la méthode fill pour la remplir. Si nécessaire, nous pouvons également utiliser la méthode slice() pour intercepter la partie dont nous avons besoin.

La méthode toString() accepte un paramètre d'encodage facultatif, nous utilisons ici l'encodage hexadécimal. Cet exemple de code génère une chaîne hexadécimale et nous pouvons voir que sa sortie est 12345678.

HexString to Byte

Dans Node.js, convertir une chaîne hexadécimale en tableau d'octets est également très simple. Il suffit de convertir cette chaîne hexadécimale en tableau d'octets. Importez simplement la chaîne binaire dans la classe Buffer. Voici un exemple de code qui convertit une chaîne hexadécimale en tableau d'octets :

const hexString = 'ab12fde9';
const byteArr = Buffer.from(hexString, 'hex');
console.log(`byteArr: ${byteArr}`);
// byteArr: <Buffer ab 12 fd e9>

Le premier paramètre de la méthode Buffer.from est un type de chaîne, indiquant d'où nous voulons venir. Ici, nous le spécifions sous forme de chaîne hexadécimale plutôt que de tableau.

Le deuxième paramètre est facultatif, il indique quel encodage utiliser pour décoder le premier paramètre. Ici, nous l'avons mis en hexadécimal.

Convertir un tableau d'octets en nombre décimal

Dans Node.js, convertir un tableau d'octets en nombre décimal est également très simple. Nous pouvons utiliser la classe ArrayBuffer et la classe DataView pour réaliser cette fonction. Voici un exemple de code qui convertit un tableau d'octets en nombre décimal :

const byteArr = new Uint8Array([0x12, 0x34, 0x56, 0x78]);
const buffer = new ArrayBuffer(4);
const dataView = new DataView(buffer);
byteArr.forEach((item, index) => {
  dataView.setUint8(index, item);
});
const decNum = dataView.getUint32(0, false);
console.log(`decNum: ${decNum}`);
// decNum: 305419896

Cet exemple de code utilise la classe ArrayBuffer pour créer un tampon de taille 4. Ensuite, nous avons utilisé la classe DataView pour lire et écrire les données dans ce tampon.

Tout d'abord, nous créons un objet de type Uint8Array appelé byteArr et le définissons sur le tableau d'octets que nous voulons convertir.

Ensuite, nous avons créé des objets d'instance Buffer et DataView nommés buffer et dataView. Ensuite, nous utilisons la méthode setUint8() de DataView pour écrire chaque élément du byteArr dans le tampon.

Enfin, nous utilisons la méthode getUint32() de DataView pour lire les données dans le tampon et renvoyer un nombre décimal. La sortie de cet exemple de code est 305419896.

Convertir un nombre décimal en tableau d'octets

De même, dans Node.js, convertir un nombre décimal en tableau d'octets est très simple. Il suffit d'utiliser la méthode setUintX() de la classe DataView. Voici un exemple de code qui convertit un nombre décimal en tableau d'octets :

const decNum = 305419896;
const buffer = new ArrayBuffer(4);
const dataView = new DataView(buffer);
dataView.setUint32(0, decNum, false);
const byteArr = new Uint8Array(buffer);
console.log(`byteArr: ${byteArr}`);
// byteArr: Uint8Array [ 18, 52, 86, 120 ]

Cet exemple de code utilise la méthode setUint32 de DataView pour écrire un nombre décimal dans une nouvelle instance d'ArrayBuffer. Ensuite, nous convertissons cette instance ArrayBuffer en un tableau d'octets en la passant dans un Uint8Array.

Le résultat de sortie de cet exemple de code est un tableau d'octets avec des valeurs [18, 52, 86, 120].

Summary

Dans Node.js, octet en HexString, HexString en octet, nombre décimal en tableau d'octets et tableau d'octets en nombre décimal sont toutes des opérations très courantes. Nous pouvons utiliser la classe Buffer et la classe DataView fournies par Node.js pour implémenter ces opérations. J'espère que cet article vous aidera !

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