【问题标题】:How to convert decimal to a higher base and vice versa如何将十进制转换为更高的基数,反之亦然
【发布时间】:2015-02-19 22:04:52
【问题描述】:

作为我的 java CSC 类的编程作业,我编写了以下代码来将数字及其基数转换为十进制数,然后再转换为所需的数字和基数。

    public static int baseten(int number,int basein){
    int power = 0;
    int baseten = 0;
    while (number > 0) {
        int finalDigit = number % 10;
        int product = finalDigit*(int)Math.pow(basein, power);
        baseten += product;
        number = number / 10;
        power++;
    }
    return(baseten);
}
public static String convert (int decimal, int baseout){
    String result = "";
    while (decimal > 0){
        //if baseout
        int remainder = decimal % baseout;
        decimal = decimal / baseout;
        result = remainder + result;
    }
    return(result);
}

问题是如何在这段代码中将数字转换为大于 10 的基数?我假设可能是 char[],但我现在对数组不太擅长,无法想象那会是什么样子。我认为我不能使用 toString 或 parseInt。任何帮助,将不胜感激。提前致谢。

【问题讨论】:

  • 您可以使用字符串作为返回值,通过 ASCII 表计算字符串中每个字符的字符(例如添加到 0x30)
  • 另外——你的“baseten”方法很奇怪。 Java 中的 int 并没有真正的“基础”;您的方法可能应该声明为public static int baseten(String number, int basein)

标签: java hex decimal


【解决方案1】:

你快到了。您可以做的是插入一个 if/else 语句来确定余数是否大于或等于 10 并采取相应措施。如果不是,就做你现在正在做的事情。如果是,那么您需要在字符串中添加一个字符。这个 char 必须是 (remainder-10) + 65,因为 65 是 ascii 表上的大写 A,您需要知道余数大于 10 的位数并将其添加到 A。这可以简化为简单地添加 55,但是我认为可读性较差。然后,只需将该 char 添加到字符串中,而不是添加 int。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 2021-07-17
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2012-08-21
    • 2010-09-17
    • 1970-01-01
    相关资源
    最近更新 更多