【问题标题】:String to Long (base 16) in JavaJava中的字符串到Long(base 16)
【发布时间】:2015-11-17 19:23:29
【问题描述】:

在 java 中给定一个字符串,我怎样才能使它成为一个以 16 为底的 Long?就像 Python 中的这个函数一样:newVariable = long(string, 16)。 谢谢

【问题讨论】:

  • 很抱歉,我不知道“基数”是什么,从未使用过那种语言。是基地吗?
  • @PM77-1 你应该把它作为答案。基数的定义在这里“在数学数字系统中,基数或基数是唯一数字的数量,包括零,用于表示位置数字系统中的数字。例如,对于十进制系统(当今最常用的系统) ) 基数是十,因为它使用从 0 到 9 的十位数字。”
  • 谢谢!我得到这个错误:Exception in thread "main" java.lang.NumberFormatException: For input string: "HereTheString With values 0 to F" at java.lang.NumberFormatException.forInputString(Unknown Source) 我检查了字符串的所有字符都在 0 和 F 之间,所以我真的不知道出了什么问题

标签: java string variables long-integer


【解决方案1】:

如果字符串是十进制,而预期结果是十六进制:

String longStr = "123456789";

long l = Long.parseLong(longStr);

String hexStr = Long.toHexString(l);

System.out.println(hexStr);

【讨论】:

    【解决方案2】:
    String numberAsString = "ff";
    long number1 = Long.valueOf(numberAsString, 16);
    System.out.println(number1);
    

    这会将您输出为 255

    【讨论】:

    • 我收到此错误:Exception in thread "main" java.lang.NumberFormatException: For input string: "HereTheString With values 0 to F" at java.lang.NumberFormatException.forInputString(Unknown Source)
    【解决方案3】:

    使用 Long#parseLong(String, Integer) 将十六进制转换为十进制。

    Base16 示例:

    System.out.println(Long.parseLong("F", 16))
    

    印刷: 255

    其他基础也可以这样做,只需更改整数即可。

    【讨论】:

      【解决方案4】:

      你可以这样转换

      long var = Long.parseLong("16");
      

      【讨论】:

      • parseLong() 将字符串“16”解析为以 10 为底。
      • 应该是Long.parseLong(stringName, 16),对吧?但这给了我一个 java.lang.NumberFormatException.forInputString(Unknown Source)`` 异常
      猜你喜欢
      • 2018-05-03
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 2023-03-22
      • 2013-03-05
      相关资源
      最近更新 更多