数据如何能做到定长输出,Java有没有相应的API

流子 服务器负责人  2008-07-24 02:56:00
数据如何能做到定长输出,Java有没有相应的API,
比如我有个随机数据产生的API,大概范围在1~99999999,当它为567时,我希望它输出的为00000567,当它为45678时,输出为00045678,也就是输出为定长8位,不知有没有现成的JDK的API,如果没有,那就自己写一个。
...全文
891 点赞 收藏 41
写回复
41 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
IT_熊 2012-04-16
[Quote=引用 10 楼 的回复:]
很简单一个例子

Java code


import java.text.DecimalFormat;

public class Patternp {
public static void main(String[] args) {

DecimalFormat myformat = new DecimalFormat();
……
[/Quote]
String str = String.format("%07d", 567);
这样简单
回复
lxh861206 2011-10-14
int i = 11345459;
String aaa = Integer.toHexString(i);
System.out.println(aaa);
aaa=("0000000" + aaa).substring(String.valueOf(aaa).length());
System.out.println(aaa);
回复
dalang81 2009-08-13
int i = 11345459;
String aaa = Integer.toHexString(i);
System.out.println(aaa);
aaa=("0000000" + aaa).substring(String.valueOf(aaa).length());
System.out.println(aaa);
回复
hlwdim 2008-07-29
最简单的方法就是格式化输出了
回复
chendabian 2008-07-29
这个要好好标记一下 , 有用
回复
xuhaiyang 2008-07-26
format一下
回复
huhk 2008-07-26
长见识了
回复
magicxin031 2008-07-26
这种格式不知道实用性大不大,具体用在哪方面呢,如果用处不大就没必要了把。
回复
[Quote=引用 34 楼 jiangguilong2000 的回复:]
请问Formatter 如何格式化16进制的数?比如A34CE,要格式化为0000A34CE,DFA0格式化为00000DFA0
[/Quote]

String str = String.format("%09x", 0xA34CE);
%08x 采用 9 位小写的十六进制字符,这个可以格式化成为:0000a34ce

String str = String.format("%09X", 0xA34CE);
%08x 采用 9 位大写的十六进制字符,这个可以格式化成为:0000A34CE
回复
DecimalFormat 和 JDK 5 新增的 Formatter 都可以做到,DecimalFormat 上面已经说了很多了,我就不说了

Formatter 在 String 对象中有个工具类 String.format

String str = String.format("%08d", num);


%d 表示格式化的参数是整数类型(byte, short, int, long 或者是 BigInteger)
08 表示格式化后总共占据 8 个字符的位置,原数值不满 8 位的在前面添加“0”。
如果是:%8d 表示格式化后总共占据 8 个字符的位置,不满 8 位时在前面添加空格凑足 8 位,即数值靠右边
如果是:%-8d 与 %8d 类似,只不过不足 8 位时在后面添加空格,即数值靠左边

具体的可以看看 JDK 5 java.util.Formatter 的 API DOC,这个格式化器
对数值、日期类型进行格式化的功能非常强大!

Formatter 还可以格式化成 16 进制的数:


String str = String.format("%08x", num); 或
String str = String.format("%08X", num);

回复
mayuanfei 2008-07-26
还有一种方法.
int a = 4567;
("00000000"+a).substring(String.valueOf(a).length());
回复
流子 2008-07-26
[Quote=引用 30 楼 bao110908 的回复:]
DecimalFormat 和 JDK 5 新增的 Formatter 都可以做到,DecimalFormat 上面已经说了很多了,我就不说了

Formatter 在 String 对象中有个工具类 String.format


Java codeString str = String.format("%08d", num);



%d 表示格式化的参数是整数类型(byte, short, int, long 或者是 BigInteger)
08 表示格式化后总共占据 8 个字符的位置,原数值不满 8 位的在前面添加“0”。
如果是:%8d 表示格式化后总共占…
[/Quote]
请问Formatter 如何格式化16进制的数?比如A34CE,要格式化为0000A34CE,DFA0格式化为00000DFA0
回复
sunzhyng 2008-07-25
java.text的包下面有格式化的类:

DecimalFormat myformat = new DecimalFormat();
myformat.applyPattern("00000000");



如果是输出才能用:
System.out.printf("%7d",num);
回复
kill219111 2008-07-25
System.out.printf("%7d",num);
回复
newb_f 2008-07-25
长见识
回复
hiker_1 2008-07-25
[Quote=引用 10 楼 hmsuccess 的回复:]
很简单一个例子

Java code
import java.text.DecimalFormat;

public class Patternp {
public static void main(String[] args) {

DecimalFormat myformat = new DecimalFormat();
myformat.applyPattern("00000000");
System.out.println(myformat.format(567));
}
}
[/Quote]
回复
hujing101 2008-07-25
[Quote=引用 10 楼 hmsuccess 的回复:]
很简单一个例子


import java.text.DecimalFormat;

public class Patternp {
public static void main(String[] args) {

DecimalFormat myformat = new DecimalFormat();
myformat.applyPattern("00000000");
System.out.println(myformat.format(567));
}
}

[/Quote]
回复
zou_wei_forever 2008-07-25
mark
回复
ZangXT 2008-07-25
[Quote=引用 25 楼 jiangguilong2000 的回复:]
但如果是16进制的话,用这方法就难处理了。比如要生成00000A6E
[/Quote]
16进制可以用Integer.toHexString(int i)方法
回复
流子 2008-07-25
[Quote=引用 19 楼 xunyiren 的回复:]
引用 10 楼 hmsuccess 的回复:
很简单一个例子

Java code
import java.text.DecimalFormat;

public class Patternp {
public static void main(String[] args) {

DecimalFormat myformat = new DecimalFormat();
myformat.applyPattern("00000000");
System.out.println(myformat.format(567));
}
}


10楼正解!
[/Quote]
但如果是16进制的话,用这方法就难处理了。比如要生成00000A6E
回复
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2008-07-24 02:56
社区公告
暂无公告