Heim > Backend-Entwicklung > Golang > Wie kodiere ich ein []Byte-Slice idiomatisch in ein int64 in Go?

Wie kodiere ich ein []Byte-Slice idiomatisch in ein int64 in Go?

Mary-Kate Olsen
Freigeben: 2024-12-11 15:55:10
Original
651 Leute haben es durchsucht

How to Idiomatically Encode a []byte Slice into an int64 in Go?

Ein idiomatischerer Ansatz zum Kodieren eines []Byte-Slices in ein int64 in Go

In Go gibt es verschiedene Möglichkeiten, a zu kodieren []Byte-Slice in ein int64. Während der bereitgestellte Code die Aufgabe erfüllt, kann er für eine bessere Sprachkompetenz optimiert werden.

Originalcode:

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

Verbesserter idiomatischer Ansatz:

Ein alternativer, idiomatischerer Ansatz beinhaltet die Verwendung von Bitverschiebung und Durchschleifen Slice:

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

Erklärung:

Der verbesserte Code nutzt die Bitverschiebung (<< und >>), um die Kodierung effizient durchzuführen. Es durchläuft das Slice mithilfe der Bereichssyntax, verschiebt den Datenwert um 8 Bit (<< 8) und verknüpft dann den aktuellen Bytewert bitweise mit ODER (|). Dadurch werden die Bytes effektiv an das äußerste linke Ende der Daten angehängt, ohne vorhandene Bits zu überschreiben.

Vorteile des idiomatischen Ansatzes:

  • Prägnanz: Der Code ist deutlich kürzer und leichter zu lesen.
  • Klarheit: Die Aufteilung der Bitmanipulationsvorgänge in explizite Schritte verbessert Verständnis.
  • Verbesserte Leistung: Bitverschiebung ist effizienter als die ursprünglichen bitweisen Operationen.
  • Kompatibilität: Dieser Ansatz passt besser zum idiomatischen Stil der Go-Programmierung.

Das obige ist der detaillierte Inhalt vonWie kodiere ich ein []Byte-Slice idiomatisch in ein int64 in Go?. 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