You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							64 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							64 lines
						
					
					
						
							1.8 KiB
						
					
					
				| import java.util.Scanner;
 | |
| 
 | |
| public class jinzhi {
 | |
| 
 | |
|     // 将R进制数X转换为十进制
 | |
|     private static int toDecimal(String number, int base) {
 | |
|         int decimalValue = 0;
 | |
|         int power = 1; // 当前位的权重
 | |
| 
 | |
|         for (int i = number.length() - 1; i >= 0; i--) {
 | |
|             char digit = number.charAt(i);
 | |
|             int digitValue;
 | |
| 
 | |
|             if (Character.isDigit(digit)) {
 | |
|                 digitValue = digit - '0'; // 数字字符转为整数
 | |
|             } else {
 | |
|                 digitValue = Character.toUpperCase(digit) - 'A' + 10; // 字母字符转为整数
 | |
|             }
 | |
| 
 | |
|             decimalValue += digitValue * power;
 | |
|             power *= base; // 更新权重
 | |
|         }
 | |
| 
 | |
|         return decimalValue;
 | |
|     }
 | |
| 
 | |
|     // 将十进制数转换为S进制
 | |
|     private static String fromDecimal(int number, int base) {
 | |
|         StringBuilder result = new StringBuilder();
 | |
| 
 | |
|         while (number > 0) {
 | |
|             int remainder = number % base;
 | |
|             if (remainder < 10) {
 | |
|                 result.append((char) ('0' + remainder));
 | |
|             } else {
 | |
|                 result.append((char) ('A' + remainder - 10));
 | |
|             }
 | |
|             number /= base;
 | |
|         }
 | |
| 
 | |
|         return result.reverse().toString(); // 反转结果
 | |
|     }
 | |
| 
 | |
|     // 主方法
 | |
|     public static void main(String[] args) {
 | |
|         Scanner scanner = new Scanner(System.in);
 | |
| 
 | |
|         System.out.print("请输入源进制R (2-16): ");
 | |
|         int baseR = scanner.nextInt();
 | |
| 
 | |
|         System.out.print("请输入需要转换的数X (R进制): ");
 | |
|         String numberX = scanner.next();
 | |
| 
 | |
|         System.out.print("请输入目标进制S (2-16): ");
 | |
|         int baseS = scanner.nextInt();
 | |
| 
 | |
|         // 转换过程
 | |
|         int decimalValue = toDecimal(numberX, baseR);
 | |
|         String result = fromDecimal(decimalValue, baseS);
 | |
| 
 | |
|         System.out.println("转换结果: " + result);
 | |
|     }
 | |
| }
 |