In Binär konvertieren. Das Einlesen des Datenstücks führt zu null Ergebnissen

WBOY
Freigeben: 2024-02-08 22:06:09
nach vorne
584 Leute haben es durchsucht

In Binär konvertieren. Das Einlesen des Datenstücks führt zu null Ergebnissen

In diesem Artikel stellt der PHP-Editor Baicao vor, wie man Datenstücke in Binärdateien umwandelt und Null-Ergebnisse liefert. Der Vorgang ist sehr einfach und Sie müssen lediglich ein paar Grundregeln befolgen. Zuerst werden die Datenstücke einzeln eingelesen und dann jedes Datenstück in eine Binärdatei umgewandelt. Geben Sie als Nächstes für jede Binärzahl ein Ergebnis von Null an, wenn die darin enthaltenen Ziffern alle Nullen sind. Mit dieser Methode können wir die Datenstücke einfach in Binärdateien umwandeln und die entsprechenden Ergebnisse erhalten. Wenn Sie an diesem Prozess interessiert sind, folgen Sie dem Herausgeber, um gemeinsam zu lernen!

Frageninhalt

Ich möchte Binärdaten lesen und in eine Datei schreiben, und meine Daten bestehen nur aus Slices. Der Kodierungsteil funktioniert, aber meine Dekodierung über binary.Read liefert keine Ergebnisse. Was habe ich falsch gemacht?

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)
Nach dem Login kopieren

Das Ausführen dieses Codes ergibt

[1 0 2 0 3 0]
got: []
Nach dem Login kopieren

Spielplatz-Link hier: https://go.dev/play/p/yZOkwXj8BNv

Workaround

Sie müssen den Slice so groß machen, wie Sie aus dem Puffer lesen möchten. Sie erhalten ein leeres Ergebnis, da got die Länge Null hat.

got := make([]int16, buf.Len()/2)
if err := binary.Read(buf, binary.LittleEndian, &got); err != nil {
    fmt.Println("binary.Read failed:")
}
Nach dem Login kopieren

Wie JimB sagte, können Sie direkt aus dem Puffer lesen.

Siehe auch die Dokumentation für binary.Read

Das obige ist der detaillierte Inhalt vonIn Binär konvertieren. Das Einlesen des Datenstücks führt zu null Ergebnissen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!