将 int 转换为带有额外内容的 32 位二进制行

Converting an int into a 32-bit binary line with extra stuff

用户输入一个 8 个字符的字符串,然后将其转换为字符串并放入数组中进行播放。

有了这 8 位数字,我希望能够将它们转换成 32 位二进制 例如

整数 = 12,345,678

整数 = -10,000,000

我试过用 "StudentID = Integer.toBinaryString(sID);" 然而,它不会产生加法 0 来组成 32 位(可能更有效)。像这样

我如何才能让所有整数显示在 32 位字符串中,以及接受负数(我可以使用两个补码的取反)?

很棒的参考; http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html

对于整数,你可以使用这个技巧:

String result = Long.toBinaryString( sID & 0xffffffffL | 0x100000000L ).substring(1);

这将整数放入long,在其左侧添加一位,这意味着toBinaryString将有33位数字,然后取右侧的32位数字(删除添加的额外 1)。

一个Java8个版本:

String result = Long.toBinaryString( Integer.toUnsignedLong(sID) | 0x100000000L ).substring(1);