Java 将int/long转换为64位二进制

Java 将int/long转换为64位二进制,java,binary,Java,Binary,我正在寻找一种更好的方法,将int转换为表示为字符串的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转换为表示为字符串的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();
}
编辑2: 澄清:
我需要字符串长度为64个字符,因此需要所有前导零。

您可以使用长数据类型,它是一个64位有符号整数。然后调用将为您提供
i

如果您已经有一个
int
,那么您可以将它转换为long并使用上面的方法

这不包括前导的
0
s,因此结果字符串需要填充到64个字符。 像这样的东西会有用的

String value=Long.tobinarysting(i)
字符串零=“0000000000000000000000000000000000000000000000000000000000000000”//由64个零组成的字符串
零。子字符串(value.length())+值;

有关更多选项,请参阅。

为什么不使用
long
而不是
int
,为什么不使用?它不起作用-请检查我的编辑1。我需要前导零使其长度为64位。不幸的是,它不起作用-以前尝试过。看看我的edit@doublemc啊,这是因为它不包括前导的
0
s。你需要自己用它们来填充字符串,给我几分钟的时间来制作一个编辑是的,我已经按照帖子中所说的那样工作了,但是它太难看了(使用某人的插入),我正在寻找其他的方法。
    int messageLength = message.length();
    String messageLengthInBinary = Long.toBinaryString((long) messageLength);

messageLengthInBinary is "110"