php小編百草在這篇文章中將為大家介紹如何將資料片轉為二進制,並給出零結果。這個過程非常簡單,只需要遵循一些基本規則。首先,將資料片逐一讀入,然後將每個資料片轉為二進位。接下來,對於每個二進制數,如果其中的數字全為零,則給出零結果。透過這種方法,我們可以方便地將資料片轉為二進制,並得到相應的結果。如果你對這個過程有興趣,那就跟著小編一起來學習吧!
我想讀取二進位資料並將其寫入文件,而我的資料只是切片。編碼部分正在工作,但我透過 binary.Read
進行的解碼給出了零結果。我做錯了什麼?
data := []int16{1, 2, 3} buf := new(bytes.Buffer) err := binary.Write(buf, binary.LittleEndian, data) if err != nil { fmt.Println("binary.Write failed:", err) } fmt.Println(buf.Bytes()) // working up to this point r := bytes.NewReader(buf.Bytes()) got := []int16{} if err := binary.Read(r, binary.LittleEndian, &got); err != nil { fmt.Println("binary.Read failed:") } fmt.Println("got:", got)
運行此程式碼給出
[1 0 2 0 3 0] got: []
遊樂場連結在這裡: https://go.dev/play/p/yZOkwXj8BNv
您必須讓切片的大小與您想要從緩衝區讀取的內容一樣大。你得到一個空結果,因為 got 的長度為零。
got := make([]int16, buf.Len()/2) if err := binary.Read(buf, binary.LittleEndian, &got); err != nil { fmt.Println("binary.Read failed:") }
正如 JimB 所說,您可以直接從緩衝區讀取。
另請參閱 binary.Read
以上是轉為二進制。讀入資料片給出零結果的詳細內容。更多資訊請關注PHP中文網其他相關文章!