已经回答了以十进制格式打印的整数的问题,但我正在寻找一种优雅的方法来对非十进制格式的整数(如二进制,八进制,十六进制)执行相同的操作.
创建这样的字符串很容易:
String intAsString = Integer.toString(12345, 8);
Run Code Online (Sandbox Code Playgroud)
将创建一个具有整数值12345的八进制表示的字符串.但是如何格式化它以使字符串具有10个数字,除了计算所需的零的数量和手动组装新的字符串.
一个典型的用例是创建具有固定位数(如16,32,...)的二进制数,其中一个人想要包含前导零的所有数字.
gus*_*afc 23
对于oct和hex,它很简单String.format:
assert String.format("%03x", 16) == "010";
assert String.format("%03o", 8) == "010";
Run Code Online (Sandbox Code Playgroud)
Col*_*inD 15
使用番石榴你可以写:
String intAsString = Strings.padStart(Integer.toString(12345, 8), 10, '0');
Run Code Online (Sandbox Code Playgroud)
这个怎么样(标准Java):
private final static String ZEROES = "0000000000";
// ...
String s = Integer.toString(12345, 8);
String intAsString = s.length() <= 10 ? ZEROES.substring(s.length()) + s : s;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20780 次 |
| 最近记录: |