【发布时间】:2021-11-07 01:31:36
【问题描述】:
我正在寻找一种将 int 转换为表示为 String 的 64 位二进制的更好方法。现在我正在将 int 转换为 32 位二进制,然后在它前面添加 32 个零。我正在实现 SHA-1,我需要该 int 为 64 位二进制。
private static String convertIntTo64BitBinary(int input) {
StringBuilder convertedInt = new StringBuilder();
for(int i = 31; i >= 0; i--) { // because int is 4 bytes thus 32 bits
int mask = 1 << i;
convertedInt.append((input & mask) != 0 ? "1" : "0");
}
for(int i = 0; i < 32; i++){
convertedInt.insert(0, "0");
}
return convertedInt.toString();
}
编辑 1: 不幸的是,这不起作用:
int messageLength = message.length();
String messageLengthInBinary = Long.toBinaryString((long) messageLength);
messageLengthInBinary is "110"
编辑 2: 澄清: 我需要字符串长度为 64 个字符,所以需要所有前导零。
【问题讨论】:
-
为什么不直接使用
long而不是int,为什么不直接使用toBinaryString? -
它不工作 - 检查我的 EDIT 1。我需要前导零使其长度为 64 位。