Как я могу представить число в Go, используя только 4 бита? - PullRequest
3 голосов
/ 29 марта 2019

Я пытаюсь сжать представление числа в меньшее количество бит.Например, сейчас я использую float64 для представления числа, такого как 8.0.Мне нужно только 4 бита для представления 8.0, поэтому я пытался найти способ преобразовать представление float64 в 4-битное представление.Я знаю, что могу использовать uint8 для представления 8, используя только 8 бит, но этого недостаточно для моего приложения.Мне нужно сжать эти маленькие дополнительные кусочки в космосе.

Я осмотрел стандартную библиотеку Go, но не нашел ничего, что позволило бы мне представить число менее чем в 8 битах.Я пропустил пакет, который может помочь мне сделать это?Как я могу подойти к этой проблеме?

1 Ответ

3 голосов
/ 29 марта 2019

Стандартная библиотека 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
...