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中文網其他相關文章!