java 二进制转换十六进制的方法_java二进制转换成十六进制

public class Test {

public static void main(String[] args) {

String hex = "abef";

int i = Integer.parseInt(hex, 16);

System.out.println(hex);

String str = b2h(Integer.toBinaryString(i));

System.out.println(str);

}

static String[] hexStr = { "0", "1", "2", "3", "4", "5", "6", "7", "8",

"9", "A", "B", "C", "D", "E", "F" };

public static String b2h(String binary) {

// 这里还可以做些判断,比如传进来的数字是否都是0和1

System.out.println(binary);

int length = binary.length();

int temp = length % 4;

// 每四位2进制数字对应一位16进制数字

// 补足4位

if (temp != 0) {

for (int i = 0; i < 4 - temp; i++) {

binary = "0" + binary;

}

}

// 重新计算长度

length = binary.length();

StringBuilder sb = new StringBuilder();

// 每4个二进制数为一组进行计算

for (int i = 0; i < length / 4; i++) {

int num = 0;

// 将4个二进制数转成整数

for (int j = i * 4; j < i * 4 + 4; j++) {

num <<= 1;// 左移

num |= (binary.charAt(j) - '0');// 或运算

}

// 直接找到该整数对应的16进制,这里不用switch来做

sb.append(hexStr[num]);

// 这里如果要用switch case来做,大概是这个样子

// switch(num){

// case 0:

// sb.append('0');

// break;

// case 1:

// ...

// case 15:

// sb.append('F');

// break;

// }

}

return sb.toString();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值