我正在尝试将数字的表示压缩为更少的位数。例如,现在我正在使用float64
来表示诸如8.0
之类的数字。我只需要4位来表示8.0
,所以我试图找到一种方法将float64
表示转换为4位表示。我知道我可以使用uint8
仅用8位来表示8,但这对于我的应用程序来说还不够。我需要压缩那些多余的空间。
我环顾了Go标准库,但是没有发现任何可以使我用不到8位表示数字的东西。我错过了一个可以帮助我做到这一点的包裹吗?我该如何解决这个问题?
答案 0 :(得分:3)
Go标准库确实有一个可变长度数字的示例。
package main
import (
"encoding/binary"
"fmt"
)
func main() {
buf := make([]byte, binary.MaxVarintLen64)
x := int64(8)
n := binary.PutVarint(buf[:cap(buf)], x)
buf = buf[:n]
fmt.Println(x, len(buf), buf)
y, m := binary.Varint(buf)
fmt.Println(y, m)
}
游乐场:https://play.golang.org/p/-p6M6OSHcMF
输出:
8 1 [16]
8 1