byte是8位,取值范围是-128到127,如何将它转成int型并使其范围成为0到255?

解决方案 »

  1.   

    转换为int范围不就成了-2(31)---2(31)-1了吗?
    不是很懂楼主的意思。
    如果你要将byte类型的变量转换成int型的,直接显示转换就行了吧.
    byte m=3;
    int n=(int)m;
      

  2.   

    byte b=...;
    int i=b<0?(int)(b+256):(int)b;
      

  3.   

    这样可以
     int i=b & 0xff;
      

  4.   

    byte b ;
    ......
    int a;
    if (b1 < 0){
    a = b1 + 256;
    }else{
    a = b1;
    }
      

  5.   

    回复人: jFresH_MaN(十一月的萧邦-夜曲) ( ) 信誉:354  2005-11-02 12:24:00  得分: 0  
     
     
       byte b=...;
    int i=b<0?(int)(b+256):(int)b;
      
     
    ---------------------------
    顶一下!
      

  6.   

    谢谢,jFresH_MaN和keiy正解
    PS一下: int i=b & 0xff;是什么意思啊,跟0xff做与操作改变了原来的二进制位吗?这个转换的实现机制是什么呢?
      

  7.   

    回复人: yyouyou(一塌) ( ) 信誉:100  2005-11-02 12:16:00  得分: 0  
     
     
       楼主是说把符号位看出数据位?
    -10变成-10+128=118?
      
     
    是这个意思,不过-10应该变成-10+256=246
      

  8.   

    那用我的 int i=b & 0xff;就没问题
      

  9.   


       byte b=...;
    int i=b<0?(int)(b+256):(int)b;应该很真确了