首页 > 解决方案 > 如何将 int 数转换为两个数字,首先由奇数位组成,第二个由偶数位组成

问题描述

如何将 int=43707 转换为其他两个数字?

第一个数字由奇数位的值组成。第二个数字由偶数位的值组成。

int x = 43707; // 1010101010111011
var even = 0;
var odd = 0;
    
for (int i = 0; i<=31; i++) {
    if(i%2 == 0) {
        ?
    } else {
        ?
    }
}

标签: javaoperation

解决方案


我想到了这个:

int x = 43707;
String binary = Integer.toBinaryString(x);
System.out.println("binary=" + binary);

String odds = "";
String evens = "";

for (int i = binary.length() - 1; i >= 0; i--) {
    if ((i + 1) % 2 == 0) {
            odds += binary.charAt(i);
        } else {
            evens += binary.charAt(i);
    }
}

System.out.println("odds=" + odds);
System.out.println("evens=" + evens);

int odd = Integer.parseInt(odds, 2);
int even = Integer.parseInt(evens, 2);

System.out.println("number from odd bits=" + odd);
System.out.println("number from even bits=" + even);

印刷

binary=1010101010111011
odds=10100000
evens=11111111
number from odd bits=160
number from even bits=255

我从右到左数位。


推荐阅读