首頁 >後端開發 >Golang >在 Go 中如何將位元組數組轉換為有符號整數和浮點數?

在 Go 中如何將位元組數組轉換為有符號整數和浮點數?

Patricia Arquette
Patricia Arquette原創
2024-10-29 07:53:30878瀏覽

How can I convert byte arrays to signed integers and floats in Go?

Go 中將位元組陣列轉換為有符號整數和浮點數

在Go 中,二進位套件提供了從[]byte>

在Go 中,二進位套件轉換無符號整數的函數數組,例如binary.LittleEndian.Uint16()和binary.BigEndian.Uint32()。但是,有符號整數或浮點數沒有直接等價物。

缺少有符號整數轉換函數的原因

缺少有符號整數轉換函數主要是由於事實上,將二進位表示解釋為有符號或無符號值是程式邏輯的問題。 []byte 陣列本身僅包含原始二進位數據,可以根據應用程式的要求將其解釋為有符號或無符號。

如何轉換為有符號整數

要將無符號整數值轉換為有符號整數,可以使用簡單的型別轉換。由於相同大小的無符號和有符號整數的記憶體佈局是相同的,因此使用 int16(a) 將 a 從 uint16 轉換為 int16 將保留原始二進位表示形式,同時分配適當的符號。

轉換為浮點數

從無符號整數轉換為浮點數需要更多的參與。 math 套件提供了用於此目的的函數:math.Float32frombits() 和 math.Float64frombits()。相反,math.Float32bits() 和 math.Float64bits() 可用來取得浮點數值的無符號整數表示。

Binary.Read() 和Binary.Write() 的使用

二進位套件還包含Read() 和Write() 函數,可以在後台更有效地執行這些轉換。這些函數允許您直接讀取類型值,而不需要中間類型轉換。

使用 Binary.Read() 進行浮點轉換的範例

考慮以下內容例如:
<code class="go">b := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40}

var pi float64
buf := bytes.NewReader(b)
err := binary.Read(buf, binary.LittleEndian, &pi)
if err != nil {
    fmt.Println("binary.Read failed:", err)
}

fmt.Println(pi) // Output: 3.141592653589793</code>

以上是在 Go 中如何將位元組數組轉換為有符號整數和浮點數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn