一个字节按高四位第四位拆成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)
}


上一篇 下一篇

猜你喜欢

热点阅读