Heim > Backend-Entwicklung > Golang > Wie kann ich ein Byte-Slice in Go effizient in ein int64 kodieren?

Wie kann ich ein Byte-Slice in Go effizient in ein int64 kodieren?

Susan Sarandon
Freigeben: 2024-12-05 14:03:10
Original
636 Leute haben es durchsucht

How can I efficiently encode a byte slice into an int64 in Go?

Effiziente Byte-Slice-Kodierung in Go

Wie kann man mit einem idiomatischen Ansatz ein Byte-Slice in ein int64 in Go kodieren? Betrachten Sie den folgenden Codeausschnitt:

import "fmt"

func main() {
    var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244}
    var data int64
    for i := 0; i < 8; i++ {
                data |= int64(mySlice[i] & byte(255)) << uint((8*8)-((i+1)*8))
    }
    fmt.Println(data)
}
Nach dem Login kopieren

Obwohl dieser Code die Aufgabe erfüllt, gibt es eine prägnantere und elegantere Möglichkeit, das gleiche Ergebnis zu erzielen?

Idiomatische Lösung

Eine idiomatischere Möglichkeit, ein Byte-Slice in ein int64 zu kodieren, wird im Folgenden bereitgestellt Code:

func main() {
    var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244}
    data := int64(0)
    for _, b := range mySlice {
        data = (data << 8) | int64(b)
    }
    fmt.Printf("%d\n", data)
}
Nach dem Login kopieren

In dieser Lösung verwenden wir den Bereichsoperator, um über die Elemente des Byte-Slices zu iterieren, und verwenden den bitweisen Linksverschiebungsoperator (<<), um die Werte effizient in einem zu akkumulieren int64.

Vorteile der Idiomatik Ansatz

  • Einfachheit:Die Schleife ist einfacher und leichter zu lesen, da Bitmanipulationen und komplexe Berechnungen vermieden werden.
  • Wartbarkeit: Die Wartung und Erweiterung in der Zukunft ist einfacher, da es dem üblichen Muster des Durchlaufens einer Sammlung und der Akkumulation folgt Werte.
  • Effizienz: Trotz seiner Einfachheit ist der Code immer noch effizient, mit einer vergleichbaren zeitlichen und räumlichen Komplexität wie der ursprüngliche Ansatz.

Fazit

Während der ursprüngliche Codeausschnitt im Hinblick auf die spezifischen Bitmanipulationsoperationen möglicherweise klarer ist, ist der idiomatische Ansatz klarer prägnant, elegant und wartbar. In den meisten Fällen ist die idiomatische Lösung die bevorzugte Wahl zum Codieren eines Byte-Slices in ein int64 in Go.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Byte-Slice in Go effizient in ein int64 kodieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage