【问题标题】:How to convert BigInteger value to Hex in Java如何在 Java 中将 BigInteger 值转换为十六进制
【发布时间】:2012-08-11 22:21:29
【问题描述】:

我有一个 BigInteger 数字,我需要将其转换为十六进制。我尝试了以下方法:

    String dec = null;
    System.out.println("Enter the value in Dec: ");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    dec = br.readLine();  
    BigInteger toHex=new BigInteger(dec,16);
    String s=toHex.toString(16);
    System.out.println("The value in Hex is: "+ s);

但这并没有在转换后给我正确的值。谁能帮忙。

【问题讨论】:

  • 你得到的价值是多少?您期望的价值是多少?
  • 我希望输出包含字母。但输出总是以数字的形式出现。
  • 您尝试使用什么十进制值?
  • 例如:如果我输入 15,我期望 F。但我得到 21。
  • 0x15 = 21。您将输入 as 解析为十六进制字符串。

标签: java


【解决方案1】:

你应该改变

BigInteger toHex=new BigInteger(dec,16);

BigInteger toHex=new BigInteger(dec,10);
                                     ^

目前您要求用户输入一个 dec 值,然后将输入解释为一个十六进制值。 (这就是输出与输入相同的原因。)

【讨论】:

  • 需要提高我的打字速度
  • 好的。但是写:String s=toHex.toString(16);String s=toHex.toString();有什么区别??
  • toString() 将返回一个 base-10 表示的数字,而 toString(16) 将返回一个 base-16 表示的数字。
  • 我应该使用什么,因为它们都给了我正确的输出。所以我不明白。如果我输入输入 15,我会在两种情况下都得到 f。
【解决方案2】:
String hexValue = "FFF";
    System.out.println("HexaDecimal Value :"+hexValue);
    BigInteger bigint = new BigInteger(hexValue ,16);
    System.out.println("Big Int Value :"+bigint);
    BigInteger s = new BigInteger("4");
    bigint = bigint.add(s);
    System.out.println("After Addition :"+bigint);
    String hexNewValue = bigint.toString(16);
    System.out.println("HexaDecimal Value after Addition :"+hexNewValue);

【讨论】:

    【解决方案3】:

    我想我看到了问题:

    BigInteger toHex=new BigInteger(dec,16);
    

    您正在将键入的数字转换为使用基数 16 的整数。请尝试在此处使用 10

    【讨论】:

      【解决方案4】:

      使用

       BigInteger toHex=new BigInteger(dec,10);
      

      【讨论】:

        猜你喜欢
        • 2023-01-16
        • 2015-03-13
        • 2012-10-19
        • 1970-01-01
        • 2017-10-06
        • 2021-11-26
        • 2017-06-23
        • 1970-01-01
        • 2014-02-05
        相关资源
        最近更新 更多