牛骨文教育服务平台(让学习变的简单)
博文笔记

Java 中的 long 与 byte 互转

创建时间:2014-12-04 投稿人: 浏览次数:5056

long 占 8 个字节,在网络传输时经常用到!


public static byte[] LongToBytes(long values) {  
     byte[] buffer = new byte[8]; 
     for (int i = 0; i < 8; i++) {   
          int offset = 64 - (i + 1) * 8;    
          buffer[i] = (byte) ((values >> offset) & 0xff); 
      }
     return buffer;  
}

 public static long BytesToLong(byte[] buffer) {   
    long  values = 0;   
    for (int i = 0; i < 8; i++) {    
        values <<= 8; values|= (buffer[i] & 0xff);   
    }   
    return values;  
 } 


--------------------------转


public static byte[] getBytes(short data)

    {


        byte[] bytes = new byte[2];


        bytes[0] = (byte) (data & 0xff);


        bytes[1] = (byte) ((data & 0xff00) >> 8);


        return bytes;


    }




    public static byte[] getBytes(char data)


    {


        byte[] bytes = new byte[2];


        bytes[0] = (byte) (data);


        bytes[1] = (byte) (data >> 8);


        return bytes;


    }




    public static byte[] getBytes(int data)


    {


        byte[] bytes = new byte[4];


        bytes[0] = (byte) (data & 0xff);


        bytes[1] = (byte) ((data & 0xff00) >> 8);


        bytes[2] = (byte) ((data & 0xff0000) >> 16);


        bytes[3] = (byte) ((data & 0xff000000) >> 24);


        return bytes;


    }




    public static byte[] getBytes(long data)


    {


        byte[] bytes = new byte[8];


        bytes[0] = (byte) (data & 0xff);


        bytes[1] = (byte) ((data >> 8) & 0xff);


        bytes[2] = (byte) ((data >> 16) & 0xff);


        bytes[3] = (byte) ((data >> 24) & 0xff);


        bytes[4] = (byte) ((data >> 32) & 0xff);


        bytes[5] = (byte) ((data >> 40) & 0xff);


        bytes[6] = (byte) ((data >> 48) & 0xff);


        bytes[7] = (byte) ((data >> 56) & 0xff);


        return bytes;


    }




    public static byte[] getBytes(float data)


    {


        int intBits = Float.floatToIntBits(data);


        return getBytes(intBits);


    }




    public static byte[] getBytes(double data)


    {


        long intBits = Double.doubleToLongBits(data);


        return getBytes(intBits);


    }




    public static byte[] getBytes(String data, String charsetName)


    {


        Charset charset = Charset.forName(charsetName);


        return data.getBytes(charset);


    }




    public static byte[] getBytes(String data)


    {


        return getBytes(data, "GBK");


    }




    


    public static short getShort(byte[] bytes)


    {


        return (short) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)));


    }




    public static char getChar(byte[] bytes)


    {


        return (char) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)));


    }




    public static int getInt(byte[] bytes)


    {


        return (0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)) | (0xff0000 & (bytes[2] << 16)) | (0xff000000 & (bytes[3] << 24));


    }


   


    public static long getLong(byte[] bytes)


    {


        return(0xffL & (long)bytes[0]) | (0xff00L & ((long)bytes[1] << 8)) | (0xff0000L & ((long)bytes[2] << 16)) | (0xff000000L & ((long)bytes[3] << 24))


         | (0xff00000000L & ((long)bytes[4] << 32)) | (0xff0000000000L & ((long)bytes[5] << 40)) | (0xff000000000000L & ((long)bytes[6] << 48)) | (0xff00000000000000L & ((long)bytes[7] << 56));


    }




    public static float getFloat(byte[] bytes)


    {


        return Float.intBitsToFloat(getInt(bytes));


    }




    public static double getDouble(byte[] bytes)


    {


        long l = getLong(bytes);


        System.out.println(l);


        return Double.longBitsToDouble(l);


    }




    public static String getString(byte[] bytes, String charsetName)


    {


        return new String(bytes, Charset.forName(charsetName));


    }




    public static String getString(byte[] bytes)


    {


        return getString(bytes, "GBK");


    }



声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。