Java十六进制转换--数据长度超出Long整形的问题

vane_ 发布于 2016/07/28 11:50
阅读 1K+
收藏 0

只是想确认一下问题(普通的数据十六进制转换不是问题),问题是,比如,有一个长度为18的十进制字符串:“417272171774717172”,需要把它转为十六进制字符“5ca72d45549ad00”,Long.parseLong(str,16) 肯定不行啊,Java中没有这么长的整形啊?!还没找到解决办法,Java中是否有其他办法实现?

注:上面数据是用http://www.bejson.com/convert/jinzhi/转换的。

加载中
1
h
houj

那个网站计算结果是错的,

String s="417272171774717172";
BigInteger b = new BigInteger(s, 10);
String r=b.toString(16);
System.out.println(r);

正确结果是:5ca72d45549acf4




h
houj
回复 @vane_ : 那是因为js中把数字是当成double型数据处理的, 对于这个很长的数字,实际上已经丢失精度了
vane_
vane_
非常感谢,那个网站应该是用js算的,我用js算也是那个结果。
返回顶部
顶部