【发布时间】:2013-01-21 18:21:27
【问题描述】:
如何将超大 (>1MB) 十进制数转换为字节/十六进制/二进制?
例如,数字“300”应转换为 {0x01, 0x2C}。字节顺序无所谓,{0x2C, 0x01} 也可以。
源编号存储在一个准备好的文件中(没有标点符号、空格或换行符)。最大的是just over 17MB,虽然不排除以后会有100MB的号。目标也是一个文件。
有没有一种不需要很长时间的方法,或者在它确实需要很长时间的情况下是安全的?
我担心使用 BigInteger 会花费很长时间,并且不是故障保存(ie.如果出现问题,我无法中途恢复)
我并不反对实现我自己的算法,尽管我正在寻找比“检查奇数,除以 2”更有效的方法。我已经看到了一个非常有效的二进制到 BCD 的实现,Shift and Add-3 算法,并且正在寻找一个类似的高效实现。
对还支持定点数(1 位数字和其余小数,例如。 Pi)的实现的额外赞誉。
【问题讨论】:
-
你为什么不试试 BigInt,看看它是否足够快?
-
我可能会,但我只是一个高效算法的傻瓜
-
@Zom-B:每当您“担心”某些东西可能不够快时,您绝对应该在开始寻找其他地方之前对其进行测试。
标签: java binary numbers decimal converter