首页 > 解决方案 > 如何将十进制数转换为精确的 8 位二进制?

问题描述

我想编写一个函数将数字转换为 8 位二进制字符串。例如:用20,我得到的结果是10100,我想要的预期结果是00010100。

public static int printBinaryform(int number) {
    int remainder;

    if (number <= 1) {
        System.out.print(number);
        return 0;
    }

    remainder = number % 2;
    printBinaryform(number >> 1);
    System.out.print(remainder);

    return remainder;
}

public static int encryptionNumber(int number, int key) {
    int encrrptionNumber = number ^ key;
    return encrrptionNumber;
}

输入为 20,我期望输出为 00010100,实际结果为 10100。

标签: javadecimal8-bit

解决方案


您可以使用此 oneliner 将整数 20 格式化为 00010100:

System.out.println(String.format("%08d", Integer.parseInt(Integer.toString(20, 2), 10)));

我不确定这就是你要找的。无论如何,这是它的工作原理:

String str = Integer.toString(20, 2); // Turn an integer into a string consisting of numbers using base 2 (ie a string of 0:s and 1:s)

int i = Integer.parseInt(str, 10); // Parse the string assuming it is a decimal value

String.format("%08d", i); // Format the integer as a string with length 8 and leading 0:s

推荐阅读