【发布时间】:2017-03-03 04:09:08
【问题描述】:
Java 出色地提供了Long.decode 来解析大多数 int 格式,但不是二进制:
Long.decode("11") => 11
Long.decode("011") => 9
Long.decode("0x11") => 17
Long.decode("0b11") => java.lang.NumberFormatException
有没有一种方法可以为我解析包含二进制文字的字符串?
附:
我知道如果我想自己提取基数/值,我可以使用Long.parseLong 的二进制形式,但理想情况下,我正在寻找一个无需任何预处理即可解析"0b11" 的函数。
【问题讨论】:
-
从技术上讲,这是一个字符串而不是二进制文字。使用二进制文字,您只需编写:
Long n = 0b11L; -
好点,将更新标题。
-
这一直是我的烦恼。它也没有用underscores(例如“100_000”)解析整数字符串的方法,尽管它肯定接受带有下划线的literals。
-
这是否意味着据您所知不存在好的解决方案?
-
老实说,“不”很好,只要有人有证据证明它在核心 Java 或标准库中不存在。或者,一个好的社区图书馆就足够了。