【Java例题】6.1 进制转换

本文介绍了一个使用Java实现的进制转换程序,该程序能够将用户输入的二、八、十或十六进制数转换为其他进制数。程序通过控制台接收用户指令并进行相应的转换操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.进制转换。
输入一个某种进制的整数,将其转换为其它进制的整数。
说明:仅考虑十、二、八和十六进制。

package chapter6;
import java.util.*;

public class demo1 {
    static public void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("按1+enter---输入2进制数");
        System.out.println("按2+enter---输入8进制数");
        System.out.println("按3+enter---输入10进制数");
        System.out.println("按4+enter---输入16进制数");
        int con1=sc.nextInt();
        System.out.println("按1+enter---转换为2进制数");
        System.out.println("按2+enter---转换为8进制数");
        System.out.println("按3+enter---转换为10进制数");
        System.out.println("按4+enter---转换为16进制数");
        int con2=sc.nextInt();
        switch(con1) {
        case 1:System.out.println("请输入2进制数");break;
        case 2:System.out.println("请输入8进制数");break;
        case 3:System.out.println("请输入10进制数");break;
        case 4:System.out.println("请输入16进制数");break;
        default:System.out.println("请输入正确指令!");break;
    }
        String num=sc.next(); 
        zhuanhuan(con1,con2,num);
        sc.close();
    }

    private static void zhuanhuan(int a,int b,String c) {
        switch(a*10+b) {
        case 11:System.out.println(c);break;
        case 12:System.out.println(Integer.toOctalString(Integer.valueOf(c,2)));break;
        case 13:System.out.println(Integer.valueOf(c, 2));break;
        case 14:System.out.println(Integer.toHexString(Integer.valueOf(c,2)));break;
        case 21:System.out.println(Integer.toBinaryString(Integer.valueOf(c,8)));break;
        case 22:System.out.println(c);break;
        case 23:System.out.println(Integer.valueOf(c,8));break;
        case 24:System.out.println(Integer.toHexString(Integer.valueOf(c,8)));break;
        case 31:System.out.println(Integer.toBinaryString(Integer.parseInt(c)));break;
        case 32:System.out.println(Integer.toOctalString(Integer.parseInt(c)));break;
        case 33:System.out.println(c);break;
        case 34:System.out.println(Integer.toHexString(Integer.parseInt(c)));break;
        case 41:System.out.println(Integer.toBinaryString(Integer.valueOf(c,16)));break;
        case 42:System.out.println(Integer.toOctalString(Integer.valueOf(c,16)));break;
        case 43:System.out.println(Integer.valueOf(c,16));break;
        case 44:System.out.println(c);break;
        }
        
    }
}

 

转载于:https://www.cnblogs.com/LPworld/p/10724059.html

### 二进制转十六进制的原理 在计算机科学里,由于每位十六进制数可以代表四个二进制位,因此两者之间的转换变得相对简单。为了将一个二进制串转化为对应的十六进制表示,通常先从右向左每四位一组分割该序列;如果最左边的一组不足四位,则在其前补零直到长度达到四为止[^1]。 ### Python 实现二进制到十六进制的转换 对于希望利用Python来进行此类操作的情况而言,可以直接运用内置函数`int()`配合指定基数参数读取给定字符串作为特定进制下的整型值,之后再通过调用`hex()`获得其对应的小写十六进制字符串表达,并去除掉前面不必要的'0x'[^(3)]: ```python binary_string = '1101' decimal_value = int(binary_string, 2) hexadecimal_result = hex(decimal_value)[2:].upper() print(f"The binary {binary_string} is converted to hexadecimal as: {hexadecimal_result}") ``` 上述代码片段展示了如何把二进制字符串 `'1101'` 转换成相应的十六进制形式并打印出来。这里需要注意的是,在最终输出之前进行了大写的转换以便于阅读理解。 另外一种方式则是手动编写算法完成这一过程而不依赖任何库函数的支持。这种方法涉及到了对输入数据按字节分片处理以及映射表的应用等细节问题[(4)]: ```python def bin_to_hex(bin_str): mapping = { "0000": "0", "0001": "1", "0010": "2", "0011": "3", "0100": "4", "0101": "5", "0110": "6", "0111": "7", "1000": "8", "1001": "9", "1010": "A", "1011": "B", "1100": "C", "1101": "D", "1110": "E", "1111": "F" } padded_bin_str = (len(bin_str) % 4 * '0') + bin_str[::-1] result = ''.join([mapping[padded_bin_str[i:i+4][::-1]] for i in range(0,len(padded_bin_str),4)]) return result.rstrip('0').zfill((len(result)+3)//4) example_binary = "1101" converted_hex = bin_to_hex(example_binary) print(f"Binary string '{example_binary}' converts into Hexadecimal as '{converted_hex}'.") ``` 此自定义版本不仅实现了相同的功能,而且允许开发者更深入地了解整个转换流程的工作机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值