[] byteオブジェクトがあり、そのサイズをバイト単位で取得したい。 golangにはCのsizeof()に相当するものがありますか?そうでない場合、同じことを実現する他の方法を提案できますか?
バイトスライスのバイト数を返すには、len
関数を使用します。
bs := make([]byte, 1000)
sz := len(bs)
// sz == 1000
基になる配列のバイト数を意味する場合は、代わりにcap
を使用します。
bs := make([]byte, 1000, 2000)
sz := cap(bs)
// sz == 2000
1バイトは1バイトであることが保証されています: https://golang.org/ref/spec#Size_and_alignment_guarantees 。
あなたの最善の策は次のとおりだと思います。
package main
import "fmt"
import "encoding/binary"
func main() {
thousandBytes := make([]byte, 1000)
tenBytes := make([]byte, 10)
fmt.Println(binary.Size(tenBytes))
fmt.Println(binary.Size(thousandBytes))
}
https://play.golang.org/p/HhJif66VwY
安全でないものをインポートしてsizeofを使用するなど、多くのオプションがあります。
import unsafe "unsafe"
size := unsafe.Sizeof(bytes)
スライスなどの一部のタイプでは、Sizeof
がスライス記述子のサイズを提供することに注意してください。また、スライスの長さと容量が異なり、binary.Sizeによって返される値が長さを反映していることに注意してください。