import java.util.Scanner; import java.math.BigInteger; public class Main { public static void main(String[] args) { //i为幸运数字十进制结果 counter为第几个幸运数字 int i = 1, counter = 0; while(true) { //1.进制转化2.转换为字符串类型 String bin = Integer.toBinaryString(i); String oct = Integer.toOctalString(i); String dec = String.valueOf(i);//本身就是10进制,直接转换成字符串类型 String hex = Integer.toHexString(i); //各进制和 int binSum = sum(bin, 2); int octSum = sum(oct, 8); int decSum = sum(dec, 10); int hexSum = sum(hex, 16); //判断是否是幸运数字,是counter++ if(i % binSum == 0 && i % octSum == 0 && i % decSum == 0 && i % hexSum == 0) { counter++; } if(counter >= 2023) { System.out.println(i); break;//counter >= 2023 结束循环,输出i } i++; } } //sum()方法:储存各进制之和 private static int sum(String numStr, int radix) { BigInteger ret = new BigInteger("0", radix); for(int i1 = 0; i1 < numStr.length(); i1++) { String s = numStr.substring(i1, i1+1); BigInteger bn = new BigInteger(s, radix); ret = ret.add(bn); } return ret.intValue(); } }第一点和第二点看不懂怎么转换进制的
时间: 2025-06-26 10:25:30 浏览: 11
### Java 中不同进制转换的方法详解
#### 使用 `BigInteger` 实现二进制与十进制的相互转换
在 Java 中,可以通过 `BigInteger` 类来完成二进制字符串到十进制大整数以及相反方向的转换。以下是具体实现方式:
```java
import java.math.BigInteger;
public class BinaryToDecimal {
public static void main(String[] args) {
// 将二进制字符串 "1010" 转换为十进制大整数
String binaryString = "1010";
BigInteger decimal = new BigInteger(binaryString, 2);
System.out.println("Decimal: " + decimal);
// 将十进制大整数 "10" 转换为二进制字符串
BigInteger decimalNum = new BigInteger("10");
String binaryStringFromDecimal = decimalNum.toString(2);
System.out.println("Binary: " + binaryStringFromDecimal);
}
}
```
上述代码展示了如何使用 `BigInteger` 的构造函数和 `toString()` 方法进行二进制与十进制间的转换[^1]。
---
#### 使用 `Integer.parseInt` 和 `Integer.toString` 完成多种进制间转换
对于较小范围内的数值(即适合存储于基本数据类型中的值),可以借助 `Integer.parseInt` 和 `Integer.toString` 来处理不同的进制转换需求。
##### 示例:解析特定进制的字符串并打印其对应的十进制值
```java
System.out.println(Integer.parseInt("F1", 16)); // 十六进制 -> 十进制 (输出: 241)
System.out.println(Integer.parseInt("12", 4)); // 四进制 -> 十进制 (输出: 6)
System.out.println(Integer.parseInt("12", 16)); // 十六进制 -> 十进制 (输出: 18)
```
以上代码片段演示了如何将十六进制、四进制等其他进制形式的字符串转化为十进制整数[^2]。
##### 示例:将十进制整数转换为目标进制的字符串表示
```java
int number = 25;
// 十进制转二进制
System.out.println(Integer.toString(number, 2)); // 输出: '11001'
// 或者使用专用方法 toBinaryString()
System.out.println(Integer.toBinaryString(number)); // 输出: '11001'
// 十进制转八进制
System.out.println(Integer.toString(number, 8)); // 输出: '31'
// 或者使用专用方法 toOctalString()
System.out.println(Integer.toOctalString(number)); // 输出: '31'
// 十进制转十六进制
System.out.println(Integer.toString(number, 16)); // 输出: '19'
// 或者使用专用方法 toHexString()
System.out.println(Integer.toHexString(number)); // 输出: '19'
```
这些方法提供了便捷的方式用于执行常见的进制转换操作[^3]。
---
#### JavaScript 风格的进制转换对比
尽管问题是关于 Java 的进制转换,但为了提供更全面的理解,这里也简单介绍一种类似的机制——JavaScript 中的 `Number.prototype.toString(radix)` 方法。它允许开发者轻松地把数字对象转换为其指定基底下的字符串表达形式。
```javascript
var n = 17;
console.log(n.toString()); // 默认十进制输出: '17'
console.log(n.toString(2)); // 二进制输出: '10001'
console.log(n.toString(8)); // 八进制输出: '21'
console.log(n.toString(10)); // 十进制输出: '17'
console.log(n.toString(12)); // 十二进制输出: '15'
console.log(n.toString(16)); // 十六进制输出: '11'
```
虽然这是另一种编程语言的功能展示,但它有助于加深对跨平台技术概念的一致性的认识[^4]。
---
阅读全文
相关推荐

















