Kotlin进制转换

4,119

进制表示

kotlin不支持表示8进制。

  • 二进制
0b1101
  • 十六进制
0xd

运算

  • 与 1001 & 1101 -> 1001
(0b1001 and 0b1101).toString(2)
// 或者
0b1001.and(0b1101).toString(2)
  • 或 1001 | 1101 -> 1101
(0b1001 or 0b1101).toString(2)
// 或者
0b1001.or(0b1101).toString(2)
  • 异或 1001 ^ 1101 -> 0100
(0b1001 xor 0b1101).toString(2)
// 或者
0b1001.xor(0b1101).toString(2)
  • 左移 1001 << 1 -> 10010
(0b1001 shl 1).toString(2)
// 或者
0b1001.shl(1).toString(2)
  • 右移 1001 >> 1 -> 0100
(0b1001 shr 1).toString(2)
// 或者
0b1001.shr(1).toString(2)
  • 无符号右移 1001 >>> 1 -> 0100
(0b1001 ushr 1).toString(2)
// 或者
0b1001.ushr(1).toString(2)

十进制

  • 十进制转2进制 13->1101
13.toString(2)
// 或者
Integer.toBinaryString(13)
  • 十进制转8进制 13->15
13.toString(8)
// 或者
Integer.toOctalString(13)
  • 十进制转16进制 13->d
13.toString(16)
// 或者
Integer.toHexString(13)

二进制

  • 2进制转8进制 1101->13->15
// 先转10进制再转8进制
"1101".toInt(2).toString(8)
  • 2进制转10进制 1101->13
"1101".toInt(2)
// 或者
Integer.valueOf("1101",2)
  • 2进制转16进制 1101->13->d
// 先转10进制再转16进制
"1101".toInt(2).toString(16)

八进制

  • 8进制转2进制 15->13->1101
// 先转10进制再转2进制
"15".toInt(8).toString(2)
  • 8进制转10进制 15->13
"15".toInt(8)
// 或者
Integer.valueOf("15",8)
  • 8进制转16进制 15->13->d
// 先转10进制再转16进制
"15".toInt(8).toString(16)

十六进制

  • 16进制转2进制 d->13->1101
// 先转10进制再转2进制
"d".toInt(16).toString(2)
  • 16进制转8进制 d->13->15
// 先转10进制再转8进制
"d".toInt(16).toString(8)
  • 16进制转10进制 d->13
"d".toInt(16)
// 或者
Integer.valueOf("d",16)