Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tukar kepada binari. Pembacaan dalam sekeping data memberikan hasil sifar

Tukar kepada binari. Pembacaan dalam sekeping data memberikan hasil sifar

WBOY
WBOYke hadapan
2024-02-08 22:06:09562semak imbas

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)

Menjalankan kod ini memberi

[1 0 2 0 3 0]
got: []

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:")
}

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam