Tukar kepada binari. Pembacaan dalam sekeping data memberikan hasil sifar

WBOY
Lepaskan: 2024-02-08 22:06:09
ke hadapan
583 orang telah melayarinya

Tukar kepada binari. Pembacaan dalam sekeping data memberikan hasil sifar

Dalam artikel ini, editor PHP Baicao akan memperkenalkan cara menukar kepingan data kepada binari dan memberikan hasil sifar. Prosesnya sangat mudah dan anda hanya perlu mengikuti beberapa peraturan asas. Mula-mula, kepingan data dibaca satu demi satu, dan kemudian setiap kepingan data ditukar kepada binari. Seterusnya, bagi setiap nombor binari, jika digit di dalamnya adalah semua sifar, berikan hasil sifar. Melalui kaedah ini, kita boleh dengan mudah menukar kepingan data kepada binari dan mendapatkan hasil yang sepadan. Jika anda berminat dengan proses ini, ikuti editor untuk belajar bersama!

Kandungan soalan

Saya mahu membaca data perduaan dan menulisnya pada fail, dan data saya hanyalah kepingan. Bahagian pengekodan berfungsi tetapi penyahkodan saya melalui binary.Read memberikan hasil sifar. Apa yang saya buat salah?

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)
Salin selepas log masuk

Menjalankan kod ini memberi

[1 0 2 0 3 0]
got: []
Salin selepas log masuk

Pautan taman permainan di sini: https://go.dev/play/p/yZOkwXj8BNv

Penyelesaian

Anda perlu membuat kepingan sebesar apa yang anda mahu baca daripada penimbal. Anda mendapat hasil kosong kerana mendapat mempunyai panjang sifar.

got := make([]int16, buf.Len()/2)
if err := binary.Read(buf, binary.LittleEndian, &got); err != nil {
    fmt.Println("binary.Read failed:")
}
Salin selepas log masuk

Seperti kata JimB, anda boleh membaca terus dari penimbal.

Lihat juga dokumentasi untuk binary.Read

Atas ialah kandungan terperinci Tukar kepada binari. Pembacaan dalam sekeping data memberikan hasil sifar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!