【问题标题】:Convert hexadecimal number to long integer将十六进制数转换为长整数
【发布时间】:2013-02-27 20:28:29
【问题描述】:

我正在尝试将十六进制数转换为十进制数,但它不适用于非常大的值(十进制超过 2,147,483,647),因为那里的 int 类型是有限的。

这是我的适用于整数的代码

String nombreHexa = h2d.getText().toString();
            if (isHex(nombreHexa) == true) {
                int deciInt = Integer.parseInt(nombreHexa, 16);
                String newDeci = String.valueOf(deciInt);
                resulth2d.setText(newDeci);
            }

我尝试将 deciInt 设置为 long,但这并不是那么简单。问题似乎来自 parseInt 函数(parseLong 也不存在)

有人知道我应该怎么做吗?

【问题讨论】:

  • 你需要支持什么范围的值?
  • 我还不知道,但我认为 Int 是不够的。抱歉,不准确

标签: java decimal hex


【解决方案1】:

Long.parseLong(String num, int radix) 有什么问题?

String nombreHexa = h2d.getText().toString();
        if (isHex(nombreHexa) == true) {
            long deciLong = Long.parseLong(nombreHexa, 16);
            String newDeci = String.valueOf(deciLong);
            resulth2d.setText(newDeci);
        }

【讨论】:

  • 我试过的时候不知道是什么问题,也许我忘记了什么。但是使用您的代码,它可以工作。谢谢!编辑:我的错,我刚刚发现出了什么问题:我使用了 Long.Long(nombreHexa, 16); (没有解析)
【解决方案2】:

作为this answer suggest,使用Long.decode(str)

将 String 解码为 Long。接受十进制、十六进制和八进制 数字。

如果您需要大于Long.MAX_VALUEyou should probably use BigInteger

【讨论】:

  • 我尝试了 walenborn 的代码,它可以工作,但是这种方式也可以,它允许 BigInteger(我不知道)谢谢!
【解决方案3】:

parseLong 也存在。只要只是大小问题,都可以用。

【讨论】:

    猜你喜欢
    • 2010-10-16
    • 2014-04-16
    • 2016-12-04
    • 1970-01-01
    • 2012-03-08
    • 2011-08-11
    相关资源
    最近更新 更多