下面用一段golang來驗證:
package main
import "fmt"
func main() {
var a int64
a = -2
b := WriteS64(a)
PrintBytes(b)
}
func PrintBytes(b []byte) {
fmt.Print("[ ")
for i := 0; i < len(b); i++ {
fmt.Printf("%8b ", b[i])
}
fmt.Print("]\n")
}
func WriteU64(v uint64) []byte {
buf := make([]byte, 8)
for i := range buf {
buf[i] = byte(v >> uint((7-i)*8))
}
return buf
}
func WriteS64(v int64) []byte {
return WriteU64(uint64(v))
}