java - 如何将十进制数转换为精确的 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。
解决方案
您可以使用此 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
推荐阅读
- reactjs - react-beautoful-dnd 中的目标 droppableId 问题。接收到错误的目标可丢弃 id
- r - 用一个命令提取矩阵的几个不同元素?
- flutter - PetitParser 和括号
- nexus - Nexus Blobstore.compact 任务失败
- url - 如何使用 Coldfusion 从referrer 中获取值
- c++ - C++自注册工厂,多参数构造函数
- javascript - 模块导出问题,无法导出对象
- google-sheets - 如何在 Google 表格中连接和转置两个单元格范围?
- ios - 如何使用 VScode 修复 Flutter IOS 运行问题?
- ms-access - 为列表中的每个项目创建多个记录 - ACCESS