Java中byte数组与long数组相互转化

来源:互联网 发布:淘宝联盟怎么看pid 编辑:程序博客网 时间:2024/06/05 15:11
Java中byte数组与long数组相互转化
ByteAndLongArrayTest代码如下:
  1. package com.array.test;
  2. import java.io.IOException;
  3. /**
  4.  * @ version 1.0
  5.  * @ author  wangwei
  6.  * @ created on  2008-10-17
  7.  */
  8. public class ByteAndLongArrayTest {
  9.     /**
  10.      * long数组转化为byte数组
  11.      * 
  12.      * @param longArray
  13.      * @return
  14.      * @throws IOException
  15.      */
  16.     public static byte[] longToByte(long[] longArray)throws IOException{
  17.         byte[] byteArray=new byte[longArray.length*8];
  18.         for(int i=0;i<longArray.length;i++)
  19.         {
  20.             byteArray[0+8*i]=(byte)(longArray[i]>>56);
  21.             byteArray[1+8*i]=(byte)(longArray[i]>>48);
  22.             byteArray[2+8*i]=(byte)(longArray[i]>>40);
  23.             byteArray[3+8*i]=(byte)(longArray[i]>>32);
  24.             byteArray[4+8*i]=(byte)(longArray[i]>>24);
  25.             byteArray[5+8*i]=(byte)(longArray[i]>>16);
  26.             byteArray[6+8*i]=(byte)(longArray[i]>>8);
  27.             byteArray[7+8*i]=(byte)(longArray[i]>>0);
  28.         }
  29.         return byteArray;
  30.     }
  31.     
  32.     /**
  33.      * byte数组转化为long数组
  34.      * 
  35.      * @param byteArray
  36.      * @return
  37.      * @throws IOException
  38.      */
  39.     public static long[] byteToLong(byte[] byteArray)throws IOException{
  40.         
  41.         long [] longArray=new long[byteArray.length/8];
  42.         for(int i=0;i<longArray.length;i++)
  43.         {
  44.             longArray[i]=(((long)byteArray[0+8*i]&0xff)<<56)
  45.                         |(((long)byteArray[1+8*i]&0xff)<<48)
  46.                         |(((long)byteArray[2+8*i]&0xff)<<40)
  47.                         |(((long)byteArray[3+8*i]&0xff)<<32)
  48.                         |(((long)byteArray[4+8*i]&0xff)<<24)
  49.                         |(((long)byteArray[5+8*i]&0xff)<<16)
  50.                         |(((long)byteArray[6+8*i]&0xff)<<8)
  51.                         |(((long)byteArray[7+8*i]&0xff)<<0);
  52.             
  53.         }
  54.         return longArray;
  55.     }
  56.     /**
  57.      * @param args
  58.      */
  59.     public static void main(String[] args) throws Exception{
  60.         // TODO Auto-generated method stub
  61.         long [] longArray={1,2,3,4,500000};
  62.         byte [] byteArray=longToByte(longArray);
  63.         for(int i=0;i<byteArray.length;i++)
  64.         {
  65.             System.out.print(byteArray[i]+" ");
  66.         }
  67.         System.out.println();
  68.         long [] longArray2=byteToLong(byteArray);
  69.         for(int i=0;i<longArray.length;i++)
  70.             System.out.print(longArray[i]+" ");
  71.     }
  72. }