在Java中解析长数字

在Java中解析长数字,java,substring,long-integer,modulo,Java,Substring,Long Integer,Modulo,我想解析一个时间戳,一个很长的数字,比如14655**56648041**。我想从这个长数字中创建另外两个长数字,一个是最后四个数字8041,第二个是5664。我可以将数字转换为字符串,使用substring,然后再将其转换为Long,但我想知道是否有更干净的方法?我尝试使用%和/但没有成功。最后4位是num%1E4,前面4位是(num%1E8-(num%1E4))/1E4最后4位是num%1E4,前面4位是(num%1E8-(num%1E4))/1E4有。通过对数字执行模运算10000,可以获

我想解析一个时间戳,一个很长的数字,比如
14655**56648041**
。我想从这个长数字中创建另外两个长数字,一个是最后四个数字
8041
,第二个是
5664
。我可以将数字转换为字符串,使用substring,然后再将其转换为Long,但我想知道是否有更干净的方法?我尝试使用
%
/
但没有成功。

最后4位是
num%1E4
,前面4位是
(num%1E8-(num%1E4))/1E4

最后4位是
num%1E4
,前面4位是
(num%1E8-(num%1E4))/1E4

有。通过对数字执行模运算
10000
,可以获得最后四个数字:

long last4 = all%10000;
您还可以通过先除以
10000
再执行模运算来获得中间的四位数字:

long midl4 = (all/10000)%10000;
或者把它们放在一起:

long all = 1465556648041L;

long last4 = all%10000;
long midl4 = (all/10000)%10000;

System.out.println("all="+all);
System.out.println("last4="+last4);
System.out.println("midl4="+midl4);

有。通过对数字执行模运算
10000
,可以获得最后四个数字:

long last4 = all%10000;
您还可以通过先除以
10000
再执行模运算来获得中间的四位数字:

long midl4 = (all/10000)%10000;
或者把它们放在一起:

long all = 1465556648041L;

long last4 = all%10000;
long midl4 = (all/10000)%10000;

System.out.println("all="+all);
System.out.println("last4="+last4);
System.out.println("midl4="+midl4);

仅供参考,你会因为“研究不够”而获得大量的反对票。我会提高投票率,但这只能起到这么大的作用。你从这个长长的数字146555648041中得出的数字是否总是介于*之间?我不确定你想在这里完成什么是完全清楚的。
n1=num%10000
n2=(num/10000)%10000如果性能不是一个问题(即,您没有这样做数百万次),我可能会首先使用字符串操作。这似乎比在一个长的数字上操作更干净和更灵活(例如,如果你总是想要在中间分裂,并且可以有不同的长度,或者如果输入不只是一个代码>长< /代码>而是一个长的数字——这是一个不适合于<代码>长< /代码>的数字)。“没有足够的研究。”我会投票,但这只能做这么多。你从这个长数字146556648041中得出的数字是否总是介于*之间?我不确定你在这里想要完成什么。如果性能不是问题,我不清楚。
n1=num%10000;
n2=(num/10000)%10000;
(也就是说,你不会这么做数百万次)我可能会先使用字符串操作。这似乎比在单个长数字上操作更干净、更灵活(例如,如果你总是想要在中间分裂,并且可以有不同的长度,或者如果输入不仅仅是<代码>长而是一个长的数字——这是一个不符合<代码>长的数字)。