二进制、八进制、十进制、十六进制之间的转换

最近在研究图像识别的时候遇到进制之间的转换,虽然之前也了解基二进制、八进制、十进制、十六进制之间转换的基本原理,但还没有在java里对其进行实现过。于是就对其进行了一翻研究,现将自己学习的总结与大家分享一下。


基本原理

二进制——>十进制

11012=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13

八进制——>十进制

11018)=1*8^0+0*8^1+1*8^2+1*8^3=1+0+64+512=577

425(8)=5*8^0+2*8^1+4*8^2=5+16+256=277

十六进制——>十进制

110116)=1*16^0+0*16^1+1*16^2+1*16^3=1+256+4096=4353

AF(16)=15*16^0+10*16^1=15+160=175

二进制——>八进制

(1100100)2=(001100100)2=(144)8=(9)2

二进制——>十六进制

10001001101010111100110111101111=(89ABCDEF)16


java实现


javaIntegerLong这两个类里都以下三个方法:

//将i转换成二进制

toBinaryString(longi);

toBinaryString(inti);


//将i转换成十六进制

toHexString(longi);

toHexString(inti);

//将i转换成八进制

toOctalString(longi);

toOctalString(inti);


Example1:

System.out.println(Long.toBinaryString(11));
System.out.println(Long.toOctalString(11));
System.out.println(Long.toHexString(11));

结果如下:

1011

13

B

Integer、Long两个类里都将字符串转换成各种不同进制的方法:

parseInt(Strings,intradix);

parseLong(Strings,intradix);

//s是要被转换的字符串;radix要转换成的进制基数,如2(进制)8(进制)16(进制)等,也可以是其它非常见的进制,如7进制,12进制。

如:

Longl=Long.parseLong("111",2);

表示把”111”以2进制的转化成long长整型数

longl=Long.parseLong("ff",16);

表示把”ff”以16进制的转化成long长整型数


Example2:

System.out.println(Long.parseLong("ff", 16));
System.out.println(Long.parseLong("74", 8));
System.out.println(Long.parseLong("111", 2));

结果如下:

255

60

7

此外,BigInteger(大整数)也可以将十进制转换成二进制。

BigInteger(Stringval,intradix);

//表示以字符串val创建一个radix进制的BigInteger对象

toString(intradix)

//将这个大整数以radix进制表示


Example3:

BigInteger bi = new BigInteger("1011", 2);
System.out.println(bi);
System.out.println(bi.toString(8));
System.out.println(bi.toString(16));

结果如下:

11

13

b

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值