有符号整数的记录方法,就是把uint取反(按位非)之后,再加1

下面用一段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))
}


你可能感兴趣的:(有符号整数的记录方法,就是把uint取反(按位非)之后,再加1)