package main
import (
"encoding/binary"
"fmt"
"strconv"
)
func main() {
var a = []byte{0x15, 0x4B}
var b = []byte{0xE0, 0x15}
// fmt.Println(fmt.Sprintf("%.16b", 0x154B))
fmt.Println(GetYuanMa(a), GetYuanMa(b))
}
// 當data爲原碼時,輸出補碼
func GetBuMa(data []byte) uint16 {
var ym uint16
bm := binary.BigEndian.Uint16(data)
var bitNum = len(data) * 8
f := "%." + strconv.Itoa(bitNum) + "b"
bmStr := fmt.Sprintf(f, bm)
if string(bmStr[0]) == "1" {
ym = ^bm + 1
} else {
ym = bm
}
return ym
}
// 當data爲補碼時,輸出原碼。
// 原理: 補碼的補碼爲原碼
func GetYuanMa(data []byte) uint16 {
return GetBuMa(data)
}
golang獲取補碼,原碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.