【发布时间】:2011-03-10 03:30:37
【问题描述】:
问题has been answered for integers printed in decimal format,但我正在寻找一种优雅 的方法来处理非十进制 格式的整数(如二进制、八进制、十六进制) )。
创建这样的字符串很容易:
String intAsString = Integer.toString(12345, 8);
将使用整数值 12345 的八进制表示创建一个字符串。但是如何格式化它以使字符串具有 10 位数字,除了计算所需的零的数量并“手动”组装一个新的字符串。
一个典型的用例是创建具有固定位数(如 16、32...)的二进制数,其中一个人希望包含前导零在内的所有数字。
【问题讨论】:
-
“优雅”解决方案的意思是库函数。我认为没有比计算所需的零并预先连接它们更优雅的解决方案了。无论如何,如果有一个数学技巧/算法可以做你想做的事,那么二进制和八进制和十六进制会有所不同......
-
@pakore - 是的,你是对的,Java API 中已经存在的一些“库”函数对我来说是“最优雅的”;)-我只是讨厌一次又一次地重新实现这个填充代码.
-
好吧,看看 NumberFormat 类,用填充零的方法创建一个 OctalFormat、HexFormat 和 BinaryFormat 类,创建一个功能提案,提交你的代码,等待几个月,升级你的库,然后你将把它作为一个库函数:)。或者您可以为您的项目创建自己的库助手:P
-
不要一次又一次地重新实现它。使用提供它的现有库,即使它不是标准 Java 库。这基本上是一个字符串填充问题,而不是数字问题。
-
@ColinD - Guava 是我现在最喜欢的答案,如果我没有得到一个很好的答案/模式来使用标准 Java API 解决它,那么你会得到“接受”;)
标签: java