我提供给你一个思路
long是64位的,byte是8位的
long a=12345;
byte[] b=new byte[8];
b[0]=a&0xf;
b[1]=a>>8&0xf;
b[2]=a>>16&0xf;
b[3]=a>>24&0xf;
....
b[7]=a>>56&0xf;

解决方案 »

  1.   

    b[0]=a&0xf;
    b[1]=a>>8&0xff;
    b[2]=a>>16&0xff;
    b[3]=a>>24&0xff;
    ....
    b[7]=a>>56&0xff;
      

  2.   

    b[0]=(byte)a&0xff;
    b[1]=(byte)a>>8&0xff;
    b[2]=a>>(byte)16&0xff;
    b[3]=a>>(byte)24&0xff;
    ....
    b[7]=(byte)a>>56&0xff;
      

  3.   

    上楼,你这是long --> byte[] 反之该如何呢?
      

  4.   

    高位在前,低位在后的 
    http://blog.csdn.net/treeroot/archive/2004/11/17/184529.aspx
      

  5.   

    我给个简单的想法,不知行不行。
     1、先转换成String类型,通过最简单的方式如  
         str=""+val ;//val为任意类型数据,包括long,int,float
     2、String就怎么操作都行了
         ....
     3、再转成所需数据。
      

  6.   

    to treeroot,非常感谢你上次的指点!我也只是照搬过来验证正确后就使用了,因为比较急,没有想之所以然:),等有空了一定好好补补这堂课。麻烦你给个实现,谢啦,一点增分!
      

  7.   

    换个顺序都不会呀
    //低位在前
    static int bytes2int(byte[] b)
    {
           int mask=0xff;
           int temp=0;
           int res=0;
           for(int i=0;i<4;i++){
                res<<=8;
                temp=b[3-i]&mask;
                res|=temp;
            }
           return res;
    } static byte[] int2bytes(int num)
    {
           byte[] b=new byte[4];
           for(int i=0;i<4;i++){
                b[i]=(byte)(num>>>(i*8));
           }
           return b;
    }
      

  8.   

    jFresH_MaN()(AbsolutelyFresh)(java欣人) 
    莫要取消寡人
      

  9.   

    int --> byte[]-->int
    61816            1375793528
    如此结果
      

  10.   

    byte好象内部使用的是16位,也就是转换的时候要注意一下。我记得以前写程序进行移位的时候遇到过这样的问题。
      

  11.   

    to:稻草人
    没有问题呀,我看你的测试代码
    byte是8位的,batfree的担心是多余的