【问题标题】:Kotlin parse Hex String to LongKotlin 将十六进制字符串解析为 Long
【发布时间】:2017-05-29 20:01:38
【问题描述】:

我开始在 Kotlin 中工作,我需要将一个十六进制字符串解析为一个 long,这在 java 中可以用

Long.parseLong("ED05265A", 16); 

我在 Kotlin 中找不到任何东西,虽然我可以找到

val i = "2".toLong()

这不是我要找的!

在我从头开始编写任何东西之前,是否有一个内置函数?

【问题讨论】:

  • java.lang.Long.parseLong("ED05265A", 16) 怎么样?还是import java.lang.Long.parseLong [...] parseLong("ED05265A", 16)? Kotlin 与 Java 兼容,您可以而且应该使用 Java 的内置类和方法。
  • 马上试试
  • 它有效,回答问题,我会接受!
  • 请注意,您可能希望使用Long.parseUnsignedLong 而不是Long.parseLong

标签: hex kotlin long-integer


【解决方案1】:

你可以简单地使用

java.lang.Long.parseLong("ED05265A", 16)

或者

import java.lang.Long.parseLong 

[...] 

parseLong("ED05265A", 16)

Kotlin 与 Java 兼容,您可以而且应该使用 Java 的内置类和方法。

【讨论】:

  • 使用 Integer.parseInt("ffff0000", 16) 时,出现异常: NumberFormatException: For input string: "ffff0000" 。怎么会?
  • 大于最大整数值。
  • 但是在 Java 上它工作得很好,而且很容易阅读,因为在这种情况下它是一种颜色的表示(在这种情况下是红色)。假设我有一个在 Java 中使用良好的十六进制值,我应该在 Kotlin 中设置它的值是什么?我真的必须自己手动转换吗?
  • 不,它在 Java 中不起作用。您需要使用 parseUnsignedInt()。
  • 正确。我认为它也可以工作(从不需要使用它,所以忘了它有这个问题),因为我的用例在别的东西上。请考虑检查这个问题:stackoverflow.com/q/47001467/878126
【解决方案2】:

Since Kotlin v1.1 你可以使用:

"ED05265A".toLong(radix = 16)

在此之前使用 Java 的 Long.parseLong

【讨论】:

    猜你喜欢
    • 2015-08-02
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 2016-07-17
    • 2019-06-09
    相关资源
    最近更新 更多