Java字符只有7位

  • 本文关键字:7位 字符 Java java bit
  • 更新时间 :
  • 英文 :


我正在尝试制作一个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的二进制表示的"T"
  • 具有01110101的二进制表示的'u'
  • 具有01110010的二进制表示的'r'

我从程序中得到的结果是由以下位形成的int:10101000111010101110010它在"T"的表示形式的开头缺少0。

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

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

方法Integer.toBinaryString()不清零,将结果填充在左侧;你必须自己把它清零。

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

最新更新