Преобразовать байтовый массив в 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 это единственный способ.

Сожалею.

Другие вопросы по тегам