Maison  >  Article  >  développement back-end  >  Parlons de la façon de convertir un octet en entier dans Golang

Parlons de la façon de convertir un octet en entier dans Golang

PHPz
PHPzoriginal
2023-03-29 09:24:143958parcourir

Golang est un langage de programmation qui prend en charge une concurrence élevée et est léger. Il est progressivement apprécié par de plus en plus de développeurs en raison de sa simplicité, de sa facilité d'apprentissage, de son code clair et de son développement rapide. Dans Golang, différents types de données doivent être convertis. La conversion des types de données byte et int est très couramment utilisée dans le traitement des données binaires et des paquets de données réseau. Cet article présentera la méthode de conversion des types de données byte et int, qui est principalement divisée en deux parties suivantes :

  1. Comment convertir un octet en int
  2. Comment convertir un int en octet

1. to int

Dans Golang, byte est un type de données de base, qui représente un entier non signé de 8 bits allant de 0 à 255. Alors que int représente un type entier signé, sa plage dépend du compilateur et du système d'exploitation. Lors de la conversion d'octet en int, nous devons noter que puisque byte est un type entier non signé, le type int obtenu après la conversion est également un type entier non signé.

Méthode 1 : utilisez la fonction ParseUint dans la bibliothèque strconv pour la conversion

Dans Golang, vous pouvez utiliser la fonction ParseUint dans la bibliothèque strconv pour convertir le type byte en type uint64, puis convertir le type uint64 en type int , comme indiqué ci-dessous :

package main

import (
    "fmt"
    "strconv"
)

func main() {
    b := byte(100)
    i := int(strconv.ParseUint(fmt.Sprintf("%d", b), 10, 64))
    fmt.Printf("%d\n", i)
}

Dans le code ci-dessus, nous définissons d'abord une variable b pour représenter les données de type octet, puis utilisons la fonction fmt.Sprintf pour la convertir en type chaîne et utilisons la fonction strconv.ParseUint pour la convertir. au type uint64. Enfin, utilisez la fonction int pour convertir le type uint64 en type int afin d'obtenir le résultat souhaité.

Méthode 2 : utilisez la fonction BigEndian.Uint16 dans la bibliothèque binaire pour la conversion

Dans Golang, vous pouvez utiliser la fonction BigEndian.Uint16 dans la bibliothèque binaire pour convertir des données de type octet en un entier big-endian de type uint16, et puis utilisez ensuite la fonction int pour le convertir en type int, comme indiqué ci-dessous :

package main

import (
    "encoding/binary"
    "fmt"
)

func main() {
    b := byte(100)
    i := int(binary.BigEndian.Uint16([]byte{0, b}))
    fmt.Printf("%d\n", i)
}

Dans le code ci-dessus, nous utilisons la fonction binaire.BigEndian.Uint16 pour convertir les données de type octet en un entier big-endian de type uint16, qui renvoie Le type de données est uint16. Ensuite, nous le convertissons en type int et nous obtenons le résultat souhaité.

2. Méthode d'implémentation de conversion de int en octet

Dans Golang, lors de la conversion du type int en type octet, il convient de noter que si les données de type int dépassent la plage du type d'octet, les données seront tronquées et des résultats inattendus peuvent survenir. Par conséquent, vous devez d'abord déterminer si les données de type int se situent dans la plage d'octets, puis effectuer la conversion.

Méthode 1 : utilisez []byte slice pour réaliser

Vous pouvez utiliser []byte slice pour convertir le type int en type octet, comme indiqué ci-dessous :

package main

import "fmt"

func main() {
    i := 100
    if i < 0 || i > 255 {
        fmt.Printf("Error: %d is out of range.\n", i)
    } else {
        b := []byte{byte(i)}
        fmt.Printf("%v\n", b)
    }
}

Dans le code ci-dessus, nous déterminons d'abord si les données de type int sont in Dans la plage du type d'octet, si elle se trouve dans la plage, initialisez les données de type int avec []byte pour obtenir le résultat requis.

Méthode 2 : utilisez unsafe.Pointer pour réaliser

Dans Golang, vous pouvez également utiliser unsafe.Pointer pour convertir le type int en type octet, comme indiqué ci-dessous :

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    i := 100
    if i < 0 || i > 255 {
        fmt.Printf("Error: %d is out of range.\n", i)
    } else {
        b := *(*byte)(unsafe.Pointer(&i))
        fmt.Printf("%d\n", b)
    }
}

Dans le code ci-dessus, nous déterminons d'abord le type int. les données sont dans la plage du type d'octet, si elles sont dans la plage, utilisez (byte)(unsafe.Pointer(&i)) pour convertir i en type d'octet afin d'obtenir le résultat requis.

Conclusion

Grâce à l'introduction de cet article, nous avons découvert la méthode d'implémentation de conversion des types de données byte et int dans Golang. Dans le travail de programmation quotidien, qu'il s'agisse de traiter des données binaires ou des paquets de données réseau, ce point de connaissance est très utile. Nous espérons que cet article pourra vous apporter de l’aide et vous permettre de mieux utiliser Golang pour le développement.

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