Heim  >  Artikel  >  Backend-Entwicklung  >  In Binär konvertieren. Das Einlesen des Datenstücks führt zu null Ergebnissen

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

WBOY
WBOYnach vorne
2024-02-08 22:06:09562Durchsuche

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)

Das Ausführen dieses Codes ergibt

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

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen