Преобразовать байтовый массив в float64
Я пытаюсь преобразовать байтовый массив, прочитанный из файла, который на самом деле оказывается плавающим. Я могу пойти дальше и использовать strconv.ParseFloat
но мне интересно, есть ли какой-нибудь более быстрый способ добиться этого, а не издержки преобразования строк?
Следующий фрагмент из другого поста: здесь, но, очевидно, он не работает для сценария, описанного выше.
Заранее спасибо за ваши предложения.
package main
import (
"encoding/binary"
"fmt"
"math"
)
func Float64frombytes(bytes []byte) float64 {
bits := binary.LittleEndian.Uint64(bytes)
float := math.Float64frombits(bits)
return float
}
func main() {
// This is read from a file, so its avaible as a byte array
input := []byte("1.11")
// This throws an exception obviously.
float := Float64frombytes()
fmt.Println(float)
}
1 ответ
Нет, другого способа сделать это нет.
Подход, который вы перечислите как нерабочую альтернативу, был бы лучшим способом, если бы число с плавающей запятой хранилось непосредственно в двоичном виде, но поскольку оно хранится в виде строки strconv.ParseFloat
это единственный способ.
Сожалею.