日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝桥杯-十六进制转八进制(java)

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯-十六进制转八进制(java) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基礎練習 十六進制轉八進制 時間限制:1.0s 內存限制:512.0MB問題描述給定n個十六進制正整數,輸出它們對應的八進制數。輸入格式輸入的第一行為一個正整數n (1<=n<=10)。接下來n行,每行一個由0~9、大寫字母A~F組成的字符串,表示要轉換的十六進制正整數,每個十六進制數長度不超過100000。輸出格式輸出n行,每行為輸入對應的八進制正整數。【注意】輸入的十六進制數不會有前導0,比如012A。輸出的八進制數也不能有前導0。樣例輸入239123ABC樣例輸出714435274【提示】先將十六進制數轉換成某進制數,再由某進制數轉換成八進制。 package com.sihai.basic;import java.util.Scanner; import java.util.Stack;public class HexToOtc {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String str = scanner.nextLine();String binStr = hexToOtc(str);}/** C(1100),D(1101),E(1110),F(1111)*/private static String hexToOtc(String str) {String [] hexArr = {"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};String str2 = "";for(int i = 0; i < str.length(); i++){String temp = str.substring(i,i+1);for(int j = 0; j < hexArr.length; j ++){if(Integer.parseInt(temp) == j){str2 += hexArr[j]+",";}}}return str2;}/** * 將數轉為任意進制 * @param num * @param base * @return */ public static String baseString(int num,int base){ if(base > 16){ throw new RuntimeException("進制數超出范圍,base<=16"); } StringBuffer str = new StringBuffer(""); String digths = "0123456789ABCDEF"; Stack<Character> s = new Stack<Character>(); while(num != 0){ s.push(digths.charAt(num%base)); num/=base; } while(!s.isEmpty()){ str.append(s.pop()); } return str.toString(); } /** * 16進制內任意進制轉換 * @param num * @param srcBase * @param destBase * @return */ public static String baseNum(String num,int srcBase,int destBase){ if(srcBase == destBase){ return num; } String digths = "0123456789ABCDEF"; char[] chars = num.toCharArray(); //2,2int len = chars.length; if(destBase != 10){//目標進制不是十進制 先轉化為十進制 num = baseNum(num,srcBase,10); }else{ int n = 0; for(int i = len - 1; i >=0; i--){ n+=digths.indexOf(chars[i])*Math.pow(srcBase, len - i - 1); } return n + ""; } return baseString(Integer.valueOf(num),destBase); } }

總結

以上是生活随笔為你收集整理的蓝桥杯-十六进制转八进制(java)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。