进制转换

 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 }

准备全部手撸一遍原生的,罗舜元直接给我来了个方法...

    还是总结一下两种原生的思路:

  1. 十进制——>二进制——>十六进制(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)
posted @ 2023-03-20 02:58  帆のBlog  阅读(42)  评论(1)    收藏  举报