Java——十进制转换为任意进制(两种方法)

1. 方法一 

package com.zth;
import java.util.Scanner;
public class JinZhi {
  // 十进制转换为 n 进制
  public String fun(int n,int num) {
    // n 表示目标进制, num 要转换的值
    String str= "";
    int yushu ;      // 保存余数
    int shang = num;      // 保存商
    while (shang>0) {
      yushu = shang %n;
      shang = shang/n;
      
      // 10-15 -> a-f
      if(yushu>9) {
        str =(char)('a'+(yushu-10)) + str;
      }else {
        str = yushu+str;
      }
    }
    
    return str;
  }

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    JinZhi s1 = new JinZhi();
    
    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入目标进制:");
    int jinzhi = scanner.nextInt();
    System.out.print("请输入要转换的数字:");
    int num = scanner.nextInt();
    scanner.close();
    
    System.out.println(s1.fun(jinzhi, num));
  }

}

运行展示:

请输入目标进制:2
请输入要转换的数字:15
1111

2.  方法二

package demo;

import java.util.Scanner;
/**
 * 十进制转换为任意进制
 * @author 时光·漫步
 *
 */
public class Test {
  public static void main(String[] args) {
    
    Scanner scanner = new Scanner(System.in);
    
    System.out.print("请输入目标数的进制:");
    int jinzhi = scanner.nextInt();
    
    System.out.print("请输入要转换的数字:");
    int num = scanner.nextInt();
    
    scanner.close();
    
    String str = Integer.toString(num,jinzhi);
    System.out.println(str);
  }

}

 

 

  • 15
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
实现进制转换任意进制的代码如下: ```c #include <stdio.h> #include <stdlib.h> void decimalToArbitrary(int decimal, int base) { int remainder; int quotient = decimal; char *result = malloc(sizeof(char) * 100); // 分配足够的空间存储结果 int i = 0; while (quotient != 0) { remainder = quotient % base; quotient = quotient / base; if (remainder < 10) { result[i++] = remainder + '0'; // 将余数转换为字符 } else { result[i++] = remainder - 10 + 'A'; // 将余数转换为大写字母 } } printf("转换结果为:"); for (int j = i - 1; j >= 0; j--) { printf("%c", result[j]); // 倒序输出结果 } printf("\n"); free(result); // 释放内存 } int main() { int decimal, base; printf("请输入要转换的进制数:"); scanf("%d", &decimal); printf("请输入目标进制:"); scanf("%d", &base); decimalToArbitrary(decimal, base); return 0; } ``` 实现任意进制转换进制的代码如下: ```c #include <stdio.h> #include <string.h> #include <math.h> int arbitraryToDecimal(char *arbitrary, int base) { int len = strlen(arbitrary); int decimal = 0; int power = 1; for (int i = len - 1; i >= 0; i--) { int digit; if (arbitrary[i] >= '0' && arbitrary[i] <= '9') { digit = arbitrary[i] - '0'; // 将字符转换为数字 } else if (arbitrary[i] >= 'A' && arbitrary[i] <= 'Z') { digit = arbitrary[i] - 'A' + 10; // 将大写字母转换为数字 } else { printf("输入的任意进制数不合法!\n"); return -1; } decimal += digit * power; power *= base; } return decimal; } int main() { char arbitrary[100]; int base; printf("请输入要转换的任意进制数:"); scanf("%s", arbitrary); printf("请输入该数的进制:"); scanf("%d", &base); int decimal = arbitraryToDecimal(arbitrary, base); if (decimal != -1) { printf("转换结果为:%d\n", decimal); } return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值