RT,例如:当high=0x57,low=0x90,函数返回0x5790。
short combind(byte high,byte low)请高手将一下思路和算法 谢谢。

解决方案 »

  1.   

    如果说将两个小于十的整数拼成一个两位数的话是10*x+y
    那么两个字节拼成一个短整型不就是2^8 * x + y么?short combind(byte high,byte low){
        return (high * 256 + low);
    }
      

  2.   

    short combind(byte high,byte low){
            int ret = (int)high;
            ret = (ret<<8)+low;
            return (short)ret;
        }
      

  3.   

    笨男人说的好像不对哦,zhmt能不能给讲一下为什么要<<8啊?谢谢
      

  4.   

    我有个朋友给出的是下面这样,高手给解释一下嘛,我朋友没时间给我讲 晕
    short combind(byte high,byte low){

    return(short)(((high<<8)&0xFF00)|(low&0xFF));
    }
      

  5.   

    它那个&操作没必要啊,在这里又不会溢出
      

  6.   

    为什么要乘256,因为,high要放到高字节,而一个字节是8位,所以它就相当于向左移动了8位。而向左每移动一位就相当于乘于2,所以,移动8位就是2的8次方=256。
      

  7.   

    没念过大学啊 有没有专门讲基础知识的书啊?讲java的好多都只讲java的类。。
      

  8.   

    看看最基础的数据结构资料。
    现在讲JAVA的书,很“专业”,很多基础的东西都不讲。
    我觉得最好是先看基础之后再学编程,不然会觉得很浮。
    当初我学C就觉得不踏实,自己又看了汇编,反回来再看C就觉得畅通无阻了。
      

  9.   

    public int change(int high,int low)
    {
    String s=String.valueOf(high)+String.valueOf(low);
    int a;
    a=Integer.valueOf(s).intValue();
    return a;


    }
    核心算法.
      

  10.   

    大学时有一本很薄的清华出的java教程,说过这个问题
      

  11.   

    short combind(byte high,byte low){
    return (high << 8) | (0x00FF & low);
    }
      

  12.   

    高位不会溢出,低位如果是负值就会溢出
    比如high=0xF0,low=0xF0那么
    (0xF0<<8) | 0xF0 == 0xFFF0<<8 | 0xFFF0 == 0x00F0<<8 | 0xFFF0
    而我们需要的是
    (0xFFF0<<8) | (0x00FF & 0xFFF0) == 0xFFF0<<8 | 0x00F0 == 0x00F0<<8 | 0x00F0