Maison >développement back-end >Golang >Comment décompresser efficacement des entiers d'un tampon d'octets dans Go ?
Comment décompresser efficacement des entiers d'un tampon d'octets dans Golang
En Golang, lors de la manipulation d'un tampon d'octets, il est souvent nécessaire d'extraire différents types d’entiers de manière efficace. Cet article décrit deux approches qui décompactent efficacement divers types d'entiers à partir d'un tampon d'octets tout en respectant des exigences spécifiques : maintenir des décalages explicites et lire directement à partir du tampon d'octets.
Approche 1 : Utiliser .Next() pour Ignorer les octets indésirables
Une approche consiste à créer un nouveau tampon chaque fois que vous souhaitez lire un entier. Pour éviter cette surcharge, vous pouvez utiliser la méthode .Next() pour ignorer les octets que vous ne souhaitez pas lire. Par exemple :
buf := make([]byte, 1024) // ... p := bytes.NewBuffer(buf) // Read the first integer binary.Read(p, binary.LittleEndian, &inodeCount) // Skip unwanted bytes p.Next(12) // Read the next integer binary.Read(p, binary.LittleEndian, &firstDataBlock) // ...
Approche 2 : Utilisation d'une structure d'en-tête
Une approche alternative consiste à créer une structure d'en-tête qui correspond au format du tampon d'octets. Cela vous permet de lire l'intégralité de l'en-tête directement à l'aide de binaire.Read(). Par exemple :
type Header struct { InodeCount uint32 BlockCount uint32 // ... } buf := make([]byte, 1024) // ... var header Header err := binary.Read(bytes.NewBuffer(buf), binary.LittleEndian, &header) if err != nil { // ... } fmt.Printf("%#v", header)
Conclusion
Les deux approches permettent un décompression efficace des entiers à partir d'un tampon d'octets tout en répondant aux exigences de décalages explicites et de lecture directe à partir du tampon . Le choix entre eux dépend des exigences spécifiques et des caractéristiques de performance de votre application.
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!