Was ist die effizienteste Art und Weise (in Leistung) []uint32
zu und von []byte
in Golang zu konvertieren?Convert [] Uint32 in [] Byte und umgekehrt in Golang
zum Beispiel:
func main() {
source := []uint32{1,2,3}
dest := make([]byte, 4 * len(source))
// source to dest
// ?
check := len(dest)/4
// dest to check
// ?
}
Ich habe ein solution aber es besteht div, mod, und multiplizieren
package main
import (
"fmt"
)
func main() {
source := []uint32{1,2,3}
dest := make([]byte, 4*len(source))
fmt.Println(source)
for start, v := range source {
dest[start*4+0] = byte(v % 256)
dest[start*4+1] = byte(v/256 % 256)
dest[start*4+2] = byte(v/256/256 % 256)
dest[start*4+3] = byte(v/256/ 256/ 256% 256)
}
fmt.Println(dest)
check := make([]uint32,cap(dest)/4)
for start := 0; start<len(check); start++ {
check[start] = uint32(dest[start*4+0]) + uint32(dest[start*4+1]) * 256 + uint32(dest[start*4+2]) * 256 * 256 + uint32(dest[start*4+3]) * 256 * 256 * 256
}
fmt.Println(check)
}
1. Der Faktor '4' in Ihrem Code deutet darauf hin, dass Sie keine Typkonvertierung wünschen, aber irgendwie die rohe Erinnerung von Ihrem [] uint32 bekommen. 2. Was ist mit Endianess? 3. "Der effizienteste Weg" ist nicht spezifisch genug: Effizient in welchem Sinne? CPU-Zyklen, Speicher, Codezeilen, Kompatibilität, Verständlichkeit? – Volker
es ist auf appengine, so dass ich nicht wirklich weiß, welche Art von Maschine sie verwenden, größte Möglichkeit ist Little Endian. effizient in Bezug auf die Leistung – Kokizzu