如何将 int 数转换为两个数字 第一个由奇数位组成,第二个由偶数位组成

How to convert int number to two numbers witch first is made by odd bits and 2nd by even bits

如何将 int=43707 转换为另外两个数字?

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

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

只需将int转换为数字,如下所示:

List<Integer> digits = new ArrayList<Integer>();
while(x > 0) {
    digits.add(x % 10);
    x /= 10;
}
System.out.println(digits);

一旦你将数字分开,然后应用奇偶逻辑。这是完整的代码:

int x = 43707;          // 1010101010111011
List<Integer> digits = new ArrayList<>();
while(x > 0) {
    digits.add(x % 10);
    x /= 10;
}
int i = 0;
int length = digits.size();
while (i < length) {
   if(digits.get(i)%2 == 0){
       System.out.println("Even Number" + digits.get(i));
   } else {
        System.out.println("Odd Number" + digits.get(i));
   }
   i++;
}

如果您正在寻找二进制转换,那么您可以使用下面的代码。

int x = 43707;          // 1010101010111011
int testNumber;
String binaryNumber = Integer.toBinaryString(x);
for (int i = 0 ; i != binaryNumber.length() ; i++) {
    char c = binaryNumber.charAt(i);
    testNumber = Character.getNumericValue(binaryNumber.charAt(i));
    if(testNumber == 0){
        System.out.println("Even Number");
    } else {
        System.out.println("Odd Number");
    }
    System.out.println(c);
}
System.out.println(binaryNumber);

它将 Int 转换为 Binary,然后检查偶数和奇数。

希望它能按照您想要的输出为您工作。

我想到了这个:

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

我正在从右到左数位。

您正在寻找按位 AND 运算:&。您可以将它与二进制掩码(通常以十六进制表示法 0x00FF 指定)一起使用。所以你需要做类似的事情:

int x= 707; //10110011
int oddBits = 0x5555; //01010101
int evenBits = 0xAAAA; //10101010

int oddResult = x & oddBits;
System.out.println(oddResult);

int evenResult = x & evenBits;
System.out.println(evenResult);

其中 returns: 65 //00010001 和 642 // 10100010