大きな数値をバイトのリスト(Goではuint8)にエンコードしようとしています。バイト数は不明なので、vectorを使用したいと思います。しかし、Goはバイトのベクトルを提供していません。どうすればよいですか?そして、そのようなバイトベクトルのスライスを取得することは可能ですか?
データ圧縮を実装するつもりです。同じバイト数で小さい数と大きい数を格納する代わりに、小さい数でより少ないバイトを使用し、大きい数でより多くのバイトを使用する可変バイトを実装します。
私のコードはコンパイルできません、無効なタイプのアサーション:
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) }
そのようなコードをたくさんバイナリファイルに書きたいので、funcがバイト配列を返すことができるようにしたいと思います。
ベクトルのコード例が見つかりません。