进制转换
1 import java.math.BigDecimal; 2 import java.math.BigInteger; 3 import java.util.*; 4 5 public class test { 6 public static void main(String[] args) { 7 Scanner scanner = new Scanner(System.in); 8 BigInteger a = scanner.nextBigInteger(10); 9 String res = a.toString(16); 10 System.out.println(res.toUpperCase()); 11 } 12 }
准备全部手撸一遍原生的,罗舜元直接给我来了个方法...
还是总结一下两种原生的思路:
- 十进制——>二进制——>十六进制(0-15)
string = Integer.toBinaryString(i);//十转二四位一转换
二转十六(a10 b11 c12 d13 f14 e15)
四位一转
举个例子:比如010101010=0 1010 1010=0 A A=AA
0 1010 1010——>0 1*2^3+1*2^1 1*2^3+1*2^1
2.
牛逼的方法
BigInteger a = scanner.nextBigInteger(10);//定义输入数字进制 String res = a.toString(8);//定义输出数字进制
即任何进制转换都可以快速做出来
——————————————补充(2023/04/07)——————————————
此方法用于将任意进制数转换为十进制数
1 static int parseInt(String s); 2 static int parseInt(String s, int radix);
-
s -- 十进制表示的字符串
-
radix -- 指定的基数
rs是用十进制表示的字符串,6表示的是当前的数字是什么进制的
输出结果为rs的十进制数
1 String rs="101"; 2 System.out.println(Integer.parseInt(rs,6));
//输出结果:37
——————————————分割——————————————
继续手撸一遍
btw,第一次提交用的while 所以输入为0时,没有任何东西存入list,
此时应该用do{}while();先存一遍
1 import java.math.BigDecimal; 2 import java.math.BigInteger; 3 import java.util.*; 4 5 public class Main { 6 public static void main(String[] args) { 7 Scanner scanner = new Scanner(System.in); 8 int n = scanner.nextInt(); 9 List<Integer> list = new ArrayList<Integer>(); 10 int res = n; 11 int v = 0; 12 do{ 13 v = res%16; 14 list.add(v); 15 res = res/16; 16 }while (res != 0); 17 // System.out.println(list);//到这里在list中的结果是正确的的 18 Object[] arr = list.toArray(); 19 String string = ""; 20 for (int i = 0; i < arr.length; i++) { 21 String now =arr[arr.length-1-i].toString(); 22 // System.out.println(now); 23 if (now.equals("10")) { 24 now = "A"; 25 } 26 if (now.equals("11")) { 27 now = "B"; 28 } 29 if (now.equals("12")) { 30 now = "C"; 31 } 32 if (now.equals("13")) { 33 now = "D"; 34 } 35 if (now.equals("14")) { 36 now = "E"; 37 } 38 if (now.equals("15")) { 39 now = "F"; 40 } 41 string += now; 42 } 43 System.out.println(string); 44 } 45 }
staticint parseInt(String s,int radix)
浙公网安备 33010602011771号