Golang est un langage de programmation avancé largement utilisé dans les applications Web modernes, le cloud computing, la technologie des conteneurs et les microservices. Dans le domaine du traitement des données, il est souvent nécessaire de convertir les données en gros et petits bouts. Cet article vous présentera les méthodes de conversion gros et petit endian de Golang.
Dans les ordinateurs, chaque type de données a sa représentation en mémoire, dont la plus importante est l'ordre des octets, souvent appelé endianité. « Big endian » signifie que l'octet le plus élevé est stocké en premier, et « little endian » signifie que l'octet le plus faible est stocké en premier. Par exemple, si un nombre de 16 bits est 0x1234, il occupe deux octets de mémoire en mode big-endian, le premier octet est 0x12 et le deuxième octet est 0x34. En mode small-endian, le premier octet est 0x34 et le second. l'octet est 0x12.
Dans Golang, vous pouvez effectuer des opérations de conversion big-endian via le package Binary de la bibliothèque standard. Le package Binary fournit des fonctions de conversion entre les types de base et les tableaux d'octets, y compris des fonctions de conversion de l'ordre des octets big-endian et small-endian.
Parmi elles, cet article se concentre sur les fonctions suivantes :
Convertir la séquence little-endian b en un entier de type uint16.
Convertissez la séquence little-endian b en un entier de type uint32.
Convertissez la séquence little-endian b en un entier de type uint64.
Écrivez l'entier de type uint16 v dans la séquence petit-endien b.
Écrivez l'entier de type uint32 v dans la séquence petit-endien b.
Écrivez l'entier de type uint64 v dans la séquence petit-endien b.
Pour la conversion de séquences big-endian, le package Binary fournit également les fonctions correspondantes. Remplacez simplement le préfixe du nom de fonction de BigEndian par LittleEndian.
Ci-dessous, nous donnons un exemple de conversion en petit endian, en prenant uint16 comme exemple.
package main
import (
"encoding/binary" "fmt"
)
func main() {
src := []byte{0x34, 0x12} val := binary.LittleEndian.Uint16(src) fmt.Println(val) dest := make([]byte, 2) binary.LittleEndian.PutUint16(dest, val) fmt.Printf("%x", dest)
}
Dans cet exemple, nous définissons un tableau d'octets src d'une longueur de 2, qui contient une valeur de type uint16, utilisez du binaire .LittleEndian.Uint16(src) pour le convertir en une séquence petit-boutiste et imprimer la sortie. Ensuite, nous écrivons la valeur dans le nouveau tableau d'octets dest via binaire.LittleEndian.PutUint16(dest, val) et utilisons la fonction Printf pour afficher sa représentation hexadécimale. Exécutez le programme et le résultat de sortie est le suivant :
4660
1234
Vous pouvez voir que la valeur de type uint16 0x1234 est représentée par 0x3412 dans la séquence petit-boutiste et peut être restaurée à sa valeur d'origine après reconversion. .
En utilisant les fonctions du package Binary, nous pouvons facilement effectuer des opérations de conversion big-endian dans Golang. Dans les applications pratiques, la conversion endian est une méthode de conversion de données très courante et est largement utilisée dans les réseaux informatiques, les systèmes de stockage, le traitement d'images et d'autres domaines. Par conséquent, la maîtrise des opérations de conversion big et small endian de Golang sera d'une grande aide aux développeurs en traitement de données.
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!