Java--进制转换(一)

Java 代码实现进制转换(一)

Java 实现进制转换有现成封装好的类,如 Integer、BigInteger的构造函数等,下面写的是用 java 代码实现进制转换的过程。

(一)十进制 转 二进制、八进制

输入:十进制

输出:二进制、八进制

方法1:十进制 —> 二进制、八进制的统一代码

(1)利用 StringBuffer 长度可变性;
(2)进制转换的特点:除 x 取余,余数逆序输出
(3)余数使用 StringBuffer 存储,并且逆序输出

示例:

// num 表示输入的十进制数  radix 表示 二进制或八进制
public void converse(int num, int radix ) {
		StringBuffer sb = new StringBuffer();
		
		while (num != 0) {
			sb.append(num % radix);
			num /= radix;
		}
		System.out.println(sb.reverse());
}
// 函数调用:
conerse(6,2);    表示 10 进制的 6 转换为对应的 2 进制数
converse(6,8);   表示 10 进制的 6 转换为对应的 8 进制数
方法2:十进制 —> 二进制、八进制的统一代码

(1)利用链表 ArrayList 动态存储余数
(2)Collection 是 list 的父接口,因此 ArrayList 具有 Collection 的 reverse 属性
(3)数组中的数需要遍历输出

// 使用 ArrayList 实现
// num 表示十进制数  radix 表示 二进制或八进制
public void converse2(int num, int radix) {		
		ArrayList list = new ArrayList();
		
		while (num != 0) {
			list.add(num % radix);
			num /= radix;
		}
		
		// 数组逆置
		Collections.reverse(list);
		
		// 遍历数组,顺序输出
		for (Object obj : list) {
			System.out.print(obj);
		}
}
// 函数调用
conerse(6,2);    表示 10 进制的 6 转换为对应的 2 进制数
converse(6,8);   表示 10 进制的 6 转换为对应的 8 进制数

(二)十进制 转 十六进制

输入:十进制数
输出:十六进制数
方法1:使用 StringBuffer 可变字符序列

区别:不用于二进制、八进制,十六进制需要对余数进行判断,当余数大于10的时候,需要用对应的字母来表示

public void converse16(int num) {
	StringBuffer sb = new StringBuffer();
	char[] character = new char[]{'a','b','c','d','e','f'};
		
	while (num != 0) {  
		// 对余数进行判断
		if((num % 16) >= 10) { 
			// 余数大于等于10  获取字符 
			sb.append(character[num % 16 - 10]);
		}else {
			sb.append(num % 16);
		}
		num /= 16;
	}
	System.out.println(sb.reverse());
}

//  函数调用
conerse16(12);    表示 10 进制的 12 转换为对应的 16 进制数
方法2:使用 ArrayList

(1)利用链表 ArrayList 动态存储余数
(2)Collection 是 list 的父接口,因此 ArrayList 具有 Collection 的 reverse 属性
(3)数组中的数需要遍历输出

public void converse16_2(int num) {
	ArrayList list = new ArrayList();
	char[] character = new char[]{'a','b','c','d','e','f'};
		
	while (num != 0) {
		if(num % 16 >= 10) {
			list.add(character[num % 16 - 10]);
		}else {	
			list.add(num % 16);
		}
		num /= 16;
	}
		
	// 数组逆置
	Collections.reverse(list);
		
	// 遍历数组,顺序输出
	for (Object obj : list) {
		System.out.print(obj);
	}
}

//  函数调用
conerse16_2(12);    表示 10 进制的 12 转换为对应的 16 进制数
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值