Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar Slice Byte kepada Float64 dalam GoLang?

Bagaimana untuk Menukar Slice Byte kepada Float64 dalam GoLang?

Barbara Streisand
Barbara Streisandasal
2024-11-10 15:19:02206semak imbas

How to Convert a Byte Slice to a Float64 in GoLang?

Menukar Slice Byte kepada Float64 dalam GoLang

Dalam GoLang, mungkin perlu menukar kepingan bait, yang diwakili sebagai []uint8, ke dalam apungan64. Walau bagaimanapun, mencari penyelesaian yang mudah dalam talian boleh menjadi mencabar. Percubaan untuk menukar kepingan bait kepada rentetan dan kemudian kepada float64 boleh mengakibatkan kehilangan data dan nilai yang salah.

Untuk menangani isu ini, operasi binari dan fungsi matematik menyediakan kaedah yang cekap untuk menukar kepingan bait kepada float64:

package main

import (
    "encoding/binary"
    "fmt"
    "math"
)

// Convert []uint8 to float64
func Float64frombytes(bytes []byte) float64 {
    bits := binary.LittleEndian.Uint64(bytes)
    float := math.Float64frombits(bits)
    return float
}

// Convert float64 to []uint8
func Float64bytes(float float64) []byte {
    bits := math.Float64bits(float)
    bytes := make([]byte, 8)
    binary.LittleEndian.PutUint64(bytes, bits)
    return bytes
}

func main() {
    // Example: Converting math.Pi to byte slice and back to float64
    bytes := Float64bytes(math.Pi)
    fmt.Println(bytes)
    float := Float64frombytes(bytes)
    fmt.Println(float)
}

Output:

[24 45 68 84 251 33 9 64]
3.141592653589793

Kod ini coretan menunjukkan cara menukar kepingan bait kepada float64 menggunakan pakej binari.LittleEndian dan fungsi matematik.Float64frombits. Sebaliknya, ia juga menunjukkan cara untuk menukar float64 kembali kepada kepingan bait menggunakan fungsi matematik.Float64bits dan binari.LittleEndian.PutUint64.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Slice Byte kepada Float64 dalam GoLang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn