一个字节按高四位第四位拆成2个ASCII字符,0x02即为0x3
2019-07-17 本文已影响0人
路人爱早茶
- 包含进制转换以及二进制转十进制编写代码
- byte[]("0") 是将图形0转换为ascll中十进制
func main() {
///十进制转二进制
//high, low := ByteTo16([]byte("h")[0])
high, low := ByteTo16(153)
fmt.Println(high)
fmt.Println(low)
}
func Str2DEC(s string) (num int) {
l := len(s)
for i := 0; i <= l-1; i++ {
num += (int(s[i]) & 0xf) << uint8(l-i-1)
}
return
}
//单字节
func ByteTo16(format byte) (high, low string) {
//字节转换二进制
//format, _ := strconv.Atoi(strconv.FormatInt(int64(a), 2))
//获取高低位二进制
high_2 := (format & 0xf0) >> 4
low_2 := (format & 0x0f)
//高低位转十进制
low_10 := Str2DEC(fmt.Sprintf("%v", low_2))
high_10 := Str2DEC(fmt.Sprintf("%v", high_2))
//十进制高低位转asc十进制
h_a := []byte(fmt.Sprintf("%v", high_10))
l_a := []byte(fmt.Sprintf("%v", low_10))
//十进制转16进制
h_a_16 := strconv.FormatInt(int64(h_a[0]), 16)
l_a_16 := strconv.FormatInt(int64(l_a[0]), 16)
fmt.Println("===format", format)
fmt.Println("===high_2", high_2)
fmt.Println("===low_2", low_2)
fmt.Println("===low_10", low_10)
fmt.Println("===high_10", high_10)
fmt.Println("===h_a", h_a)
fmt.Println("===l_a", l_a)
fmt.Println("===h_a_16", h_a_16)
fmt.Println("===l_a_16", l_a_16)
return fmt.Sprintf("0x%v", h_a_16), fmt.Sprintf("0x%v", l_a_16)
}