[]uint32
- Golang'daki []byte
dönüştürmek için en etkili yol (performansta) nedir? örneğin[] uint32 - [] byte ve tam tersi için dönüşüm yapın
:
func main() {
source := []uint32{1,2,3}
dest := make([]byte, 4 * len(source))
// source to dest
// ?
check := len(dest)/4
// dest to check
// ?
}
Ben solution ama ibaret div, mod var ve sizin için LittleEndian
ayarlayın bu Playground
gibi bir şey sonra şüpheli
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. Kodunuzdaki "4" faktörü, tür dönüşümü istemediğinizi, ancak bir şekilde [] uint32 öğenizin işlenmemiş belleğini aldığınızı gösterir. 2. Endianess hakkında ne düşünüyorsunuz? 3. "En verimli yol" yeterince spesifik değildir: Hangi anlamda Effizient? CPU döngüleri, bellek, kod satırları, uyumluluk, anlaşılırlık? – Volker
appengine üzerinde, bu yüzden ne tür bir makine kullandıklarını bilmiyorum, en büyük olasılık küçük endian. performans açısından verimli – Kokizzu