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