蓝桥杯16进制转八进制c语言,基础练习 十六进制转八进制

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int n = sc.nextInt();

for(int cnt=0;cnt

String str = sc.next();

StringBuilder str2 = To_binary(str);

To_Octal(str2);

}

}

public static StringBuilder To_binary(String str){ //16进制转换为2进制

StringBuilder str2 = new StringBuilder(); //StringBuilder用来申明可变字符串

for(int i=0;i

char c = str.charAt(i);

switch(c){

case '0':

str2.append("0000");break;

case '1':

str2.append("0001");break;

case '2':

str2.append("0010");break;

case '3':

str2.append("0011");break;

case '4':

str2.append("0100");break;

case '5':

str2.append("0101");break;

case '6':

str2.append("0110");break;

case '7':

str2.append("0111");break;

case '8':

str2.append("1000");break;

case '9':

str2.append("1001");break;

case 'A':

str2.append("1010");break;

case 'B':

str2.append("1011");break;

case 'C':

str2.append("1100");break;

case 'D':

str2.append("1101");break;

case 'E':

str2.append("1110");break;

case 'F':

str2.append("1111");break;

default:break;

}

}

return str2;

}

public static void To_Octal(StringBuilder str){ //转为8进制,转1位输出1位

int len = str.length();

int ans=0,s = 0;

if(len % 3==1){ //最高位的补零模拟

ans = str.charAt(0)-'0';

s+=1;

}else if(len % 3==2){

ans = (str.charAt(0)-'0')*2 + (str.charAt(1)-'0');

s+=2;

}

if(ans>0)

System.out.print(ans);

boolean flog = true;

for(int i=s;i

ans =(str.charAt(i)-'0')*4+ (str.charAt(i+1)-'0')*2 + (str.charAt(i+2)-'0');

if(flog){

if(ans==0){

continue;

}else{

flog = false;

}

}

System.out.print(ans);

}

System.out.println();

}

}

这份答案中ans = (str.charAt(0)-'0')*2 + (str.charAt(1)-'0'); 还有ans =(str.charAt(i)-'0')*4+ (str.charAt(i+1)-'0')*2 + (str.charAt(i+2)-'0');看不懂,万能的吧友可以帮忙解释下这个的具体意思嘛

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值