我正在尝试制作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位int。我面临的问题是结果是23位int。说我的前3个字符是:
01010100
01110101
01110010
我从程序中得到的结果是由这些位组成的int:
10101000111010101110010
从'T'的表示开始,它缺少0。
此外,我已经包含了最后两行代码,因为我从's'得到的二进制字符串是:1110011
,它在开头时缺少0。
我已经检查过我是否错误向右滚动,但似乎我没有这样做。
答案 0 :(得分:2)
方法Integer.toBinaryString()
不会将结果置于左侧;你必须自己零填充。
此值转换为二进制(基数2)的ASCII数字字符串 没有额外的领先0。