Java char只有7位?

时间:2013-07-10 18:44:08

标签: java bits

我正在尝试制作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个字符是:

  • 'T',二进制表示为01010100
  • 'u',二进制表示形式为01110101
  • 'r',二进制表示为01110010

我从程序中得到的结果是由这些位组成的int: 10101000111010101110010 从'T'的表示开始,它缺少0。

此外,我已经包含了最后两行代码,因为我从's'得到的二进制字符串是:1110011,它在开头时缺少0。

我已经检查过我是否错误向右滚动,但似乎我没有这样做。

1 个答案:

答案 0 :(得分:2)

方法Integer.toBinaryString()不会将结果置于左侧;你必须自己零填充。

  

此值转换为二进制(基数2)的ASCII数字字符串   没有额外的领先0。