J'essaye d'encoder un grand nombre à une liste d'octets (uint8 dans Go). Le nombre d'octets est inconnu, donc je voudrais utiliser le vecteur. Mais Go ne fournit pas de vecteur d'octet, que puis-je faire? Et est-il possible d'obtenir une tranche d'un tel vecteur d'octets?Avec Go, comment ajouter un nombre inconnu d'octets dans un vecteur et obtenir une tranche d'octets?
J'ai l'intention d'implémenter la compression de données. Au lieu de stocker des petits et grands nombres avec le même nombre d'octets, J'implémente une variable octets qui utilise moins d'octets avec un petit nombre et plus d'octets avec un grand nombre.
Mon code ne peut pas compiler, affirmation de type non valide:
1 package main
2
3 import (
4 //"fmt"
5 "container/vector"
6)
7
8 func vbEncodeNumber(n uint) []byte{
9 bytes := new(vector.Vector)
10 for {
11 bytes.Push(n % 128)
12 if n < 128 {
13 break
14 }
15 n /= 128
16 }
17 bytes.Set(bytes.Len()-1, bytes.Last().(byte)+byte(128))
18 return bytes.Data().([]byte) // <-
19 }
20
21 func main() { vbEncodeNumber(10000) }
Je souhaite écrit beaucoup de code comme dans un fichier binaire, donc je souhaite le func peut revenir tableau d'octets.
Je n'ai pas trouvé d'exemple de code sur un vecteur.
En fait, je trouve que je peux utiliser la fonction bytes.Add pour répondre à mes besoins. Il n'est pas nécessaire d'utiliser un vecteur du tout. –