Maison > développement back-end > Golang > Comment convertir []byte en int dans Go pour la communication TCP ?

Comment convertir []byte en int dans Go pour la communication TCP ?

DDD
Libérer: 2024-12-13 16:37:14
original
397 Les gens l'ont consulté

How to Convert []byte to int in Go for TCP Communication?

Conversion de []byte en int dans Go pour la communication TCP

La communication sur TCP nécessite souvent l'échange de données sous forme de tableaux d'octets ( []octet). Cependant, dans certains scénarios, vous devrez peut-être convertir ces tableaux d'octets en nombres entiers (int) pour le traitement.

Méthodes de conversion

Pour convertir un tableau d'octets en nombre entier dans Go, vous pouvez utiliser deux méthodes principales :

1. Utilisation d'encoding/binary :

Le package encoding/binary fournit des fonctions qui vous permettent de convertir différents formats binaires en types Go. Plus précisément, pour convertir des tableaux d'octets en entiers, vous pouvez utiliser :

binary.LittleEndian.Uint32(mySlice) // Converts to 32-bit unsigned int
binary.BigEndian.Uint32(mySlice) // Converts to 32-bit unsigned int in big endian format
Copier après la connexion

2. Conversion personnalisée :

Vous pouvez également implémenter votre logique de conversion si les fonctions de la bibliothèque standard ne répondent pas à vos exigences spécifiques. Voici un exemple de conversion personnalisée pour convertir un tableau de 4 octets en un entier :

func bytesToInt(mySlice []byte) int {
    return int(mySlice[0]<<24 | mySlice[1]<<16 | mySlice[2]<<8 | mySlice[3])
}
Copier après la connexion

Exemple d'application :

Dans votre exemple client-serveur, vous peut utiliser le code suivant pour envoyer des entiers au serveur :

package main

import (
    "encoding/binary"
    "net"
)

func main() {
    // 2 numbers to send
    num1 := 100
    num2 := 200

    // Convert to byte arrays
    buf1 := make([]byte, 4)
    binary.LittleEndian.PutUint32(buf1, uint32(num1))
    buf2 := make([]byte, 4)
    binary.LittleEndian.PutUint32(buf2, uint32(num2))

    // Connect to server
    conn, err := net.Dial("tcp", "127.0.0.1:8080")
    if err != nil {
        // Handle error
    }

    // Send byte arrays to server
    if _, err := conn.Write(buf1); err != nil {
        // Handle error
    }
    if _, err := conn.Write(buf2); err != nil {
        // Handle error
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal