java中的二进制、八进制、十六进制

  • 二进制(binary)
  • 八进制(Octal)
  • int变量不要在数值前加0,会被误以为八进制
  • 十进制(decimalism)
  • 十六进制(00H)(hexadecimal)
  • int表示十六进制数时,需要偶数个长度
  • 转换为String,还可以同步转换进制


二进制(binary)

//二进制,0b/0B打头,赋值时也不需要引号
int Bin_0b = 0b11;
int Bin_0B = 0B11;
//直接在system中以十进制输出,其会根据int前缀判断是几进制
System.out.println(Bin_0b);
System.out.println(Bin_0B);

//若想将此二进制以二进制数的形式转换出来时,使用Integer.toBinaryString(Bin_0b )方法,因为Bin_0b的二进制仅有两位,若直接输出,int是32位,会有问题,所以才需要使用本方法来转换
String SCID = Integer.toBinaryString(SCIDInt);
SCID = SupplementWithParameter(SCID, 4, "0");
System.out.println("SCID:"+SCID);

//因int数据类型只有32位,当二进制位数过长,就需要用到long类型(注意,long类型要以L结尾)。
long RSV = 0B10101010101010101010101010101010101010L;
System.out.println(RSV);

输出结果为3

八进制(Octal)

//八进制数据以0打头,赋值时也不需要引号
int Oct = 0144;
//直接在system中以十进制输出,其会根据int前缀判断是几进制,所以十进制数据在打印输出时,不要在int数值前加0,会被误以为八进制,从而输出错误。
System.out.println(Oct);

输出结果为100

int变量不要在数值前加0,会被误以为八进制

十进制(decimalism)

//十进制数据不需要前缀,赋值时也不需要引号
int Dec = 144;
//直接在system中输出十进制,其会根据int前缀判断是几进制,所以十进制数据在打印输出时,不要在int数值前加0,会被误以为八进制,从而输出错误。与前面的八进制比较。
System.out.println(Dec);

输出结果为144

十六进制(00H)(hexadecimal)

Java中的int十六进制,0xC10xc1是相等的。

//十六进制数据以0x打头,赋值时也不需要引号
int Hex = 0xf;
//直接在system中输出十进制。
System.out.println(Hex);//输出结果为“15”

int表示十六进制数时,需要偶数个长度

//使用int表示十六进制时,需要偶数长度
int writeByte = 0xAAAAA;//写五个十六进制时报错,提示需要偶数长度,提示“hexBinary needs to be even-length”
int writeByte = 0xAAAAAA;//写六个十六进制

转换为String,还可以同步转换进制

String x = Integer.toBinaryString(0x0);:转换为二进制字符串。