概述
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获取补码,原码的全部内容,希望文章能够帮你解决golang获取补码,原码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复