我無法將位元組陣列的一部分轉換為 uint 值。我已經看到將切片傳遞給函式是一種更慣用的方法,但我有以下問題:
- 僅列印切片中的單個元素(它列印 [102] 而不是 102)基本上將其列印為位元組陣列而不是位元組
- 將位元組陣列的一部分(1 個元素)轉換為 uint32(binary.BigEndian.Uint32 似乎適用于整個陣列,而不僅僅是陣列中的單個元素)
- 將位元組陣列的切片(1 個元素)轉換為位元組
- 將位元組陣列的一部分(1 個元素)轉換為 uint32 變數
我已將錯誤包含在下面的評論中。編譯器給出了錯誤的原因,但我如何將這些切片轉換/轉換為變數?
下面是代碼:
package main
import (
"encoding/binary"
"fmt"
)
const FrameBitsIV = 0x10
func main() {
// str := "ab£"
data := []byte{102, 97, 108, 99, 111, 110}
uint_value := []uint8{1, 2, 3, 4, 5}
x := data[0:]
fmt.Println(x)
pass_slice(data[0:], uint_value[0:])
}
func pass_slice(buf []byte, uint_value []uint8) {
x := buf[0:1]
fmt.Println(x) //prints [102]
y := binary.BigEndian.Uint32(x)
fmt.Println(y) //prints error
var z byte = buf[0:1] //cannot use buf[0:1] (value of type []byte) as byte value in variable declaration
u := uint32(buf[0:]) //cannot convert buf[0:] (value of type []byte) to uint32
}
太感謝了。
uj5u.com熱心網友回復:
- 僅列印切片中的單個元素:
- 將位元組陣列的切片(1 個元素)轉換為位元組
使用索引運算式將位元組切片的元素作為位元組獲取:
x := buf[0] // x is type byte
fmt.Println(x) //prints 102
- 將位元組陣列的切片(1 個元素)轉換為 uint32。
- 將位元組陣列的一部分(1 個元素)轉換為 uint32 變數
使用索引運算式獲取位元組并轉換為 uint32:
x := uint32(buf[0]) // x is type uint32
fmt.Println(x) //prints 102
請注意此答案中使用的索引運算式與問題中使用的切片運算式之間的區別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/520348.html
標籤:数组去片
