我正在尝试将大量数字编码为字节列表(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 可以返回字节数组。
我还没有找到有关矢量的代码示例。