go实现整型的二进制转化的方法

2023-06-01 00:00:00 方法 整型 转化

go中已经实现了int->bin的转化函数,我这里只是化过程逻辑的实现,至于原理我就假设大家都知道了

本案例只考虑  int->bin  的转化

包含了正整数,负整数,0 的转化

package mainimport (  "fmt"  "strconv")//bin表示转化后的位数func convertToBin(n int,bin int) string{  var b string  switch {  case n==0:    for i:=0;i<bin;i++{      b+="0"    }  case n>0:    //strcov.Itoa 将 1 转为 "1" , string(1)直接转为assic码    for ; n>0;n/=2{      b=strconv.Itoa(n%2)+b    }    //加0    j:=bin-len(b)    for i:=0;i<j;i++{      b="0"+b    }  case n<0:    n=n*-1    // fmt.Println("变为整数:",n)    s:=convertToBin(n,bin)    // fmt.Println("bin:",s)    //取反    for i:=0;i<len(s);i++{      if s[i:i+1]=="1"{        b+="0"      }else{        b+="1"      }    }    // fmt.Println("~bin :",b)    //转化为整形,之后加1 这里必须要64,否则在转化过程中可能会超出范围    n,err :=strconv.ParseInt(b,2,64)    if err!=nil{      fmt.Println(err)    }    //转为bin    //+1    b=convertToBin(int(n+1),bin)  }  return b}func main(){  fmt.Println(    convertToBin(5,8), //101    convertToBin(13,8), //1101    convertToBin(11111,8),    convertToBin(0,8),    convertToBin(1,8),    convertToBin(-5,8),    convertToBin(-11111,8),  )}

结果 :

5     13      11111      0    1      -5    -11111
00000101 00001101 10101101100111 00000000 00000001 11111011 1010010011001

比如-11111的转化:

变为整数: 11111bin: 10101101100111~bin : 01010010011000结果:1010010011001

比如-1的转化:

变为整数: 1bin: 00000001~bin : 11111110结果:11111111

总结

以上所述是小编给大家介绍的go实现整型的二进制转化的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章