java 大数 16进制转10进制_Java和Shell版 十进制和十六进制(Hex)互转

这两天碰到一个需求,需要将日期yyyy-MM-dd、到秒粒度的时间戳,转换成十六进制(HexString)。

记录一下实现方法。

Java版本:

String day = "2015-05-21";

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Date d = new Date();

//将2015-05-21转换成时间戳

int unixtimstamp1 = (int) (sdf.parse(day).getTime()/1000);

//将时间戳转换为十六进制字符串

String hexString = String.format("%08X", unixtimstamp1);

System.out.println("HexString: [" + hexString + "] ..");

//将十六进制字符串转回时间戳

int unixtimstamp2 = Integer.parseInt(hexString,16);

d.setTime(unixtimstamp2*1000l);

System.out.println(sdf.format(d));

运行结果:

HexString: [555CAF80] ..

2015-05-21

Shell版本:

##将2015-05-21转换成时间戳

unixtimstamp1=`date -d "2015-05-21" +%s`

##将时间戳转换为十六进制字符串

hexString=`printf "%08X\n" $unixtimstamp1`

echo "HexString: [${hexString}] .."

##将十六进制字符串转回时间戳

unixtimstamp2=`echo $((16#${hexString}))`

day=`date -d "1970-01-01 UTC $unixtimstamp2 seconds" +%F`

echo $day

运行结果:

HexString: [555CAF80] ..

2015-05-21

如果觉得本博客对您有帮助,请 赞助作者 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值