代码如下:  
        String str="12345678";
        int strlen=str.trim().length();
   for(int i=0,j=0;i<strlen;i+=2,j++)     
   {     
   int high=charToNibble(s.charAt(i));     
   int low =charToNibble(s.charAt(i+1));   
   byte t = (byte)((high<<4) | low);
                //上面没有问题,就是下面这句有问题
   b[j]=t;
   } 一个byte类型赋值,有时候会引起机子发出“滴”的声音,t的值并没有超过byte规定的范围,出现最小的就是-128不知道有没有人碰到类似问题,请大家指教

解决方案 »

  1.   

    补充:byte[] b = new byte[strlen/2];
      

  2.   

    好奇怪的现象...和byte类型有什么关系啊
      

  3.   

    因为其他的都没有问题,就是b[j]=t; 引起的响声,所以我认为是byte类型的问题
      

  4.   

    比如说碰到什么字符串会“滴”的呢?还有charToNibble方法里有些什么?
      

  5.   

    字符串都是一样的。我测试了很多遍,charToNibble这些没有任何问题
      

  6.   

    估计不是byte引起的,是char引起的
    可以这样测试
    char c = (char)7; //这个是蜂鸣声字符,即beep
    System.out.println(c);所以
    s.charAt(i+1)中,可能有(char)7这个字符
      

  7.   

    阿宝,拜托,字符7是'7'(\u0037),是不会“滴”的,而引起“滴”的是7(\u0007)。引起响声的很有可能在charToNibble方法中,楼主你为什么不能把这个
    方法的代码贴一下呢?这样让别人怎么回答,连代码都没有贴全。
      

  8.   

    刚才外出了。  public static int charToNibble(char c )     
      {     
       if('0'<=c && c<='9')     
       {     
       return c-'0';     
       }     
       else if('a'<=c && c<='f')     
       {     
       return c-'a'+ 0xa;     
       }     
       else if('A'<=c && c<='F')     
       {     
       return  c-'A'+0xa;     
       }     
       else     
       {     
       throw new IllegalArgumentException("E:"+c);     
       }     
      } 
    在我的测试中一直没有发现这个有问题,所以就没有帖