1. // 二进制
  2. // go不能直接输出二进制,可以使用 %b 格式化
  3. // fmt %b 表示为二进制
  4. var n int = 5
  5. fmt.Printf("%T %b\n", n, n) // 101
  6. // 8进制, 0-7
  7. // 以数字0开头表示
  8. var n1 int = 011
  9. fmt.Printf("%T %v\n", n1, n1) // 9
  10. // 16进制,0-9A-F,
  11. // 以0x或者0X开头表示
  12. var n2 int = 0x11
  13. fmt.Printf("%T %v\n", n2, n2) // 17

其它进制转十进制

  1. // 十进制数字计算
  2. 123 = 3 * 1 + 2 * 10 + 1 * 100
  3. // 二进制转十进制
  4. // 从最低位开始,将每个位上的数提取出来,乘以2的位数-1次方,然后求和
  5. 1011 = 1 * 1 + 1 * 2 + 0 * 4 + 1 * 8 = 1 + 2 + 0 + 8 = 11
  6. // 八进制转十进制 同理
  7. 0123 = 3 * 1 + 2 * 8 + 1 * 64 = 3 + 16 + 64 = 83
  8. // 十六进制转十进制 同理
  9. 0x34A = 10 * 1 + 4 * 16 + 3 * 16 * 16 = 842

十进制转其它进制

除K取余法,K就是要转换成的多少进制

  1. // 十进制转二进制
  2. // 规则: 将该数不断除以2,知道商为0为止,然后将每步得到的余数倒过来,就是对应的二进制

二进制转八进制

规则: 将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可。
二进制的三位最多表示0-7
二进制: 11010101
八进制: 0325

二进制转十六进制

规则: 将二进制数每四位一组(从低位开始组合),转成对应的十六进制即可。
二进制的三位最多表示0-15
二进制: 11010101
十六进制: 0XD5

八进制转二进制

规则: 将八进制数每一位,转成对应的一个三位的二进制数即可
八进制:0237
二进制:10011111

十六进制转二进制

规则: 将十六进制数每一位,转成对应的一个四位的二进制数即可
十六进制:0237
二进制:1000110111