Heim >Backend-Entwicklung >Golang >Wie kodiere ich ein []Byte-Slice idiomatisch in ein 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)) }
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) }
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:
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!