蓝桥官网练习系统-BASIC-012 -十六进制转八进制

点击查看:蓝桥官网练习系统题解目录
题目012- 十六进制转八进制

在这里插入图片描述

题解代码
import java.io.*;
public class Main{
  public static void main(String[] args) throws IOException{
    BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
    int n=Integer.parseInt(input.readLine());
    for(int ii=0;ii<n;++ii){
       char[] s1=input.readLine().toCharArray();//s1读取16进制字符串 
       StringBuilder s2=new StringBuilder();//s2存储转换后的2进制字符串
       for(int i=0;i<s1.length;++i)//转换成2进制字符串
          switch(s1[i]){
             case '0':s2.append("0000");break;
             case '1':s2.append("0001");break;
             case '2':s2.append("0010");break;
             case '3':s2.append("0011");break;
             case '4':s2.append("0100");break;
             case '5':s2.append("0101");break;
             case '6':s2.append("0110");break;
             case '7':s2.append("0111");break;
             case '8':s2.append("1000");break;
             case '9':s2.append("1001");break;
             case 'A':s2.append("1010");break;
             case 'B':s2.append("1011");break;
             case 'C':s2.append("1100");break;
             case 'D':s2.append("1101");break;
             case 'E':s2.append("1110");break;
             case 'F':s2.append("1111");break;
             }
        while(s2.length()%3!=0)//如果s2的长度不是3的倍数,在s2字符串前补足够的0
            s2.insert(0, "0");
            s1=s2.toString().toCharArray();
            int i=0;
        while(i<s1.length&&(s1[i]-'0')*4+(s1[i+1]-'0')*2+(s1[i+2]-'0')==0) i+=3;//前导0不输出
        if(i==s1.length) System.out.println("0");//如果i已经走到2进制字符串末尾,说明字符串表示的数字是0,输出0
        else
	    for(;i<s1.length;i+=3)//3位一输出
	         System.out.print((s1[i]-'0')*4+(s1[i+1]-'0')*2+(s1[i+2]-'0'));
	System.out.println();
     }
  }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值