Maison >développement back-end >Golang >Comment puis-je encoder efficacement une tranche d'octets en Int64 dans Go ?

Comment puis-je encoder efficacement une tranche d'octets en Int64 dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-06 01:05:11898parcourir

How Can I Efficiently Encode a Byte Slice as an Int64 in Go?

Encodage Int64 efficace des tranches d'octets dans Go

Considérez le scénario suivant : vous disposez d'un tableau d'octets et devez l'encoder en tant que int64 pour un traitement ultérieur ou un stockage. Bien qu'il existe différentes approches pour y parvenir dans Go, existe-t-il un moyen plus idiomatique ou plus efficace d'effectuer cet encodage ?

Une approche courante consiste à parcourir les octets, à les décaler et à les fusionner manuellement dans la variable int64. Bien que cette méthode fonctionne, elle peut être fastidieuse et sujette aux erreurs.

Une approche alternative, à la fois idiomatique et efficace, consiste à utiliser les opérateurs au niveau du bit fournis par Go. L'extrait de code suivant illustre cette approche :

func main() {
    var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244}
    data := int64(0)

    for _, b := range mySlice {
        data = (data << 8) | int64(b)
    }
    fmt.Printf("%d\n", data)
}

Dans cet exemple, l'opérateur de décalage vers la gauche au niveau du bit (<<) est utilisé pour décaler la variable de données laissée de 8 bits à chaque itération. La valeur d'octet actuelle est ensuite convertie en un int64 et un OU au niveau du bit (|) avec les données. Ce processus ajoute effectivement la valeur d'octet à l'extrémité gauche de la variable de données, créant ainsi la représentation int64 souhaitée de la tranche d'octets.

Cette approche est concise, efficace et s'aligne sur le style idiomatique de Go. En tirant parti des opérateurs au niveau du bit, cela réduit le besoin de boucles explicites et de manipulation manuelle des bits, rendant le code plus lisible et maintenable.

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