Java有效方式从编码数字中提取

问题描述

我有一个编码的Java整数:

1ABCDEFGH
ex1: 123561287
ex2: 184236230

我希望在第一个数字之后提取2个数字对。在这种情况下,它将是:

ex1: 23,56,12,87
ex2: 84,23,62,30

我天真的想法是反复地除以100,然后用mod乘100来找到那两个数字。

List<Integer> find2DigitGroups(int number) {
// handle scenario when number is not of the format 1ABCDEFGH
...

List<Integer> result = new ArrayList<>();
result.add(number%100);
number/=100;
result.add(number%100);
number/=100;
result.add(number%100);
number/=100;
result.add(number%100);
number/=100;
return result;
} 

有什么更好的方法吗?对于二进制文件,我知道我可以使用位掩码,但是在这里我不确定。 任何想法或建议都会很有帮助。

解决方法

我敢打赌,转换为字符串是最快的方法(因为转换是由JVM一步完成的,因此避免了您正在做的所有数学运算)。然后,您可以选择字符(无需乘法)。

我找到了这些基准-https://www.happycoders.eu/java/how-to-convert-int-to-string-fastest/(我认为它们是正确的)。

当然,您应该运行自己的基准测试,以确认哪项性能最佳。