我正在尝试制作 UUencode 算法,我的部分代码包含以下内容:
for(int x = 0; x < my_chars.length; x++)
{
if((x+1) % 3 == 0)
{
char first = my_chars[x-2];
char second = my_chars[x-1];
char third = my_chars[x];
int first_binary = Integer.parseInt(Integer.toBinaryString(first));
int second_binary = Integer.parseInt(Integer.toBinaryString(second));
int third_binary = Integer.parseInt(Integer.toBinaryString(third));
int n = (((first << 8) | second) << 8) | third;
System.out.print(my_chars[x-2] + "" + my_chars[x-1] + my_chars[x] + Integer.toBinaryString(n));
}
}
System.out.println();
System.out.println(Integer.toBinaryString('s'));
我想要实现的是将我得到的字符中的 8 位组合成一个 24 位的大整数。我面临的问题是结果是 23 位 int。假设我的前 3 个字符是:
- 'T' 的二进制表示
01010100
- 'u' 的二进制表示
01110101
- 'r' 的二进制表示
01110010
我从我的程序中得到的结果是一个由这些位组成的 int:
10101000111010101110010
它在“T”的表示中缺少开头的 0。
我还包含了最后两行代码,因为我从 's' 得到的二进制字符串是:1110011
开头缺少 0。
我检查了我是否错误地向右滚动,但似乎我没有这样做。