`

[转载]Java 中 byte、byte 数组和 int、long 之间的转换

    博客分类:
  • java
 
阅读更多

 Java 中 byte 和 int 之间的转换源码:

 

[java] view plain copy
 
 print?
  1. //byte 与 int 的相互转换  
  2. public static byte intToByte(int x) {  
  3.     return (byte) x;  
  4. }  
  5.   
  6. public static int byteToInt(byte b) {  
  7.     //Java 总是把 byte 当做有符处理;我们可以通过将其和 0xFF 进行二进制与得到它的无符值  
  8.     return b & 0xFF;  
  9. }  

 

 

        测试代码:

 

[java] view plain copy
 
 print?
  1. //测试 int 转 byte  
  2. int int0 = 234;  
  3. byte byte0 = intToByte(int0);  
  4. System.out.println("byte0=" + byte0);//byte0=-22  
  5. //测试 byte 转 int  
  6. int int1 = byteToInt(byte0);  
  7. System.out.println("int1=" + int1);//int1=234  

 

 

        Java 中 byte 数组和 int 之间的转换源码:

 

[java] view plain copy
 
 print?
  1. //byte 数组与 int 的相互转换  
  2. public static int byteArrayToInt(byte[] b) {  
  3.     return   b[3] & 0xFF |  
  4.             (b[2] & 0xFF) << 8 |  
  5.             (b[1] & 0xFF) << 16 |  
  6.             (b[0] & 0xFF) << 24;  
  7. }  
  8.   
  9. public static byte[] intToByteArray(int a) {  
  10.     return new byte[] {  
  11.         (byte) ((a >> 24) & 0xFF),  
  12.         (byte) ((a >> 16) & 0xFF),     
  13.         (byte) ((a >> 8) & 0xFF),     
  14.         (byte) (a & 0xFF)  
  15.     };  
  16. }  

 

 

        测试代码:

 

[java] view plain copy
 
 print?
  1. //测试 int 转 byte 数组  
  2. int int2 = 1417;  
  3. byte[] bytesInt = intToByteArray(int2);  
  4. System.out.println("bytesInt=" + bytesInt);//bytesInt=[B@de6ced  
  5. //测试 byte 数组转 int  
  6. int int3 = byteArrayToInt(bytesInt);  
  7. System.out.println("int3=" + int3);//int3=1417  

 

 

        Java 中 byte 数组和 long 之间的转换源码:

 

[java] view plain copy
 
 print?
  1. private static ByteBuffer buffer = ByteBuffer.allocate(8);   
  2. //byte 数组与 long 的相互转换  
  3.    public static byte[] longToBytes(long x) {  
  4.        buffer.putLong(0, x);  
  5.        return buffer.array();  
  6.    }  
  7.   
  8.    public static long bytesToLong(byte[] bytes) {  
  9.        buffer.put(bytes, 0, bytes.length);  
  10.        buffer.flip();//need flip   
  11.        return buffer.getLong();  
  12.    }  

 

 

        测试代码:

 

[java] view plain copy
 
 print?
  1. //测试 long 转 byte 数组  
  2. long long1 = 2223;  
  3. byte[] bytesLong = longToBytes(long1);  
  4. System.out.println("bytes=" + bytesLong);//bytes=[B@c17164  
  5. //测试 byte 数组 转 long  
  6. long long2 = bytesToLong(bytesLong);  
  7. System.out.println("long2=" + long2);//long2=2223  

 

 

        整体工具类源码:

 

[java] view plain copy
 
 print?
  1. import java.nio.ByteBuffer;  
  2.   
  3.   
  4. public class Test {  
  5.       
  6.     private static ByteBuffer buffer = ByteBuffer.allocate(8);      
  7.   
  8.     public static void main(String[] args) {  
  9.           
  10.         //测试 int 转 byte  
  11.         int int0 = 234;  
  12.         byte byte0 = intToByte(int0);  
  13.         System.out.println("byte0=" + byte0);//byte0=-22  
  14.         //测试 byte 转 int  
  15.         int int1 = byteToInt(byte0);  
  16.         System.out.println("int1=" + int1);//int1=234  
  17.           
  18.           
  19.           
  20.         //测试 int 转 byte 数组  
  21.         int int2 = 1417;  
  22.         byte[] bytesInt = intToByteArray(int2);  
  23.         System.out.println("bytesInt=" + bytesInt);//bytesInt=[B@de6ced  
  24.         //测试 byte 数组转 int  
  25.         int int3 = byteArrayToInt(bytesInt);  
  26.         System.out.println("int3=" + int3);//int3=1417  
  27.           
  28.           
  29.         //测试 long 转 byte 数组  
  30.         long long1 = 2223;  
  31.         byte[] bytesLong = longToBytes(long1);  
  32.         System.out.println("bytes=" + bytesLong);//bytes=[B@c17164  
  33.         //测试 byte 数组 转 long  
  34.         long long2 = bytesToLong(bytesLong);  
  35.         System.out.println("long2=" + long2);//long2=2223  
  36.     }  
  37.       
  38.       
  39.     //byte 与 int 的相互转换  
  40.     public static byte intToByte(int x) {  
  41.         return (byte) x;  
  42.     }  
  43.       
  44.     public static int byteToInt(byte b) {  
  45.         //Java 总是把 byte 当做有符处理;我们可以通过将其和 0xFF 进行二进制与得到它的无符值  
  46.         return b & 0xFF;  
  47.     }  
  48.       
  49.     //byte 数组与 int 的相互转换  
  50.     public static int byteArrayToInt(byte[] b) {  
  51.         return   b[3] & 0xFF |  
  52.                 (b[2] & 0xFF) << 8 |  
  53.                 (b[1] & 0xFF) << 16 |  
  54.                 (b[0] & 0xFF) << 24;  
  55.     }  
  56.   
  57.     public static byte[] intToByteArray(int a) {  
  58.         return new byte[] {  
  59.             (byte) ((a >> 24) & 0xFF),  
  60.             (byte) ((a >> 16) & 0xFF),     
  61.             (byte) ((a >> 8) & 0xFF),     
  62.             (byte) (a & 0xFF)  
  63.         };  
  64.     }  
  65.   
  66.     //byte 数组与 long 的相互转换  
  67.     public static byte[] longToBytes(long x) {  
  68.         buffer.putLong(0, x);  
  69.         return buffer.array();  
  70.     }  
  71.   
  72.     public static long bytesToLong(byte[] bytes) {  
  73.         buffer.put(bytes, 0, bytes.length);  
  74.         buffer.flip();//need flip   
  75.         return buffer.getLong();  
  76.     }  
  77.   
  78. }  

 

 

        运行测试结果:
byte0=-22
int1=234
bytesInt=[B@de6ced
int3=1417
bytes=[B@c17164
long2=2223

参考文章1:http://stackoverflow.com/questions/7401550/how-to-convert-int-to-unsigned-byte-and-back
参考文章2:http://stackoverflow.com/questions/1936857/convert-integer-into-byte-array-java
参考文章3:http://stackoverflow.com/questions/4485128/how-do-i-convert-long-to-byte-and-back-in-java

转载自:http://blog.csdn.net/defonds/article/details/8782785

分享到:
评论

相关推荐

    Java中byte、byte数组与int、long的转换详解

    2. **Java中byte数组和int之间的转换** - **byte数组转int**:当需要从`byte`数组中读取`int`时,通常需要按照字节顺序(Big-Endian或Little-Endian)组合数组中的字节。例如,如果数组是Big-Endian,可以按顺序将...

    java基本类型与byte数组互相转换.pdf

    Java 中的基本类型与 byte 数组之间的转换是非常重要的,以下是关于 Java 基本类型与 byte 数组互相转换的相关知识点: 1. short 类型转换成 byte 数组 在 Java 中,short 类型是 16 位的整数类型,而 byte 数组是...

    Java byte数组与其他类型转换

    总的来说,Java中byte数组与其他基本类型之间的转换是通过位移和按位操作来完成的,这允许程序员在处理二进制数据时灵活地进行字节序列的解析和构造。了解并熟练掌握这些转换方法,对于处理涉及二进制数据的Java程序...

    JAVA转byte[]为int,long,double

    在Java编程语言中,将`byte[]`数组转换为`int`, `long`, 和 `double`类型的数据是一项常见的任务,特别是在处理二进制数据或网络通信时。以下将详细讲解如何进行这些转换,并提供相关代码示例。 1. **转换byte[]到...

    java基本类型与byte数组互相转换.doc

    例如,我们可以将byte数组转换为short类型、int类型、long类型、float类型、double类型、char类型等。这种转换可以使用相应的构造函数或方法来实现。 在Java编程中,将基本类型转换为byte数组或将byte数组转换为...

    java数据类型转byte数组

    ip地址转4字节byte,char转2字节byte,byte数组转char,int整数转换为4字节的byte数组,byte数组转换为int整数,double类型转8字节数组,8位数组转double,long整数转换为8字节的byte数组,short整数转换为2字节的...

    java byte数组与int,long,short,byte的转换实现方法

    本文将详细介绍如何在Java中将`byte`数组与其他基本数据类型(如`int`、`long`、`short`、`byte`)之间进行转换。 首先,我们来看`byte`到`int`的转换。Java中的`byte`类型是8位的,取值范围是-128到127。如果要将...

    java实现的字节数组转换成基本类型,基本类型转换成byte[]

    char short int long float double 转换成byte数组

    java基本类型与byte数组互相转换

    在Java编程语言中,基本类型的变量(如`short`、`int`、`long`、`char`、`double`和`float`)和`byte`数组之间的相互转换是一项非常实用的技术,尤其是在网络通信、文件读写等场景下。下面将详细介绍如何进行这些...

    java基本类型与byte数组互相转换文.pdf

    Java 中的基本类型包括 boolean、byte、char、short、int、long、float 和 double 等。这些基本类型可以相互转换,例如将 short 类型转换成 byte 数组、int 类型转换成 byte 数组等。 在 Java 中,基本类型可以...

    java整数与byte数组的转换实现代码

    在Java中,整数可以分为多种类型,如int、long、short等,每种类型都有其对应的byte数组长度。例如,int类型的整数可以转换为4字节的byte数组,而long类型的整数可以转换为8字节的byte数组。 在上面的代码中,我们...

    Java整型数与网络字节序byte[]数组转换关系详解

    例如,在socket通信中,我们可以使用这些方法来将Java中的整型数转换为byte[]数组,并将其发送到C/C++端,而在C/C++端,我们可以使用相应的方法将byte[]数组转换回整型数。 本文介绍了Java整型数和网络字节序byte[]...

    java基本类型与byte数组互相转换.rar

    总结一下,Java中的基本类型与字节数组的转换涉及到一系列的方法和类,包括`ByteBuffer`, `CharsetEncoder`, `DataInputStream`, 和 `DataOutputStream`。理解这些工具的使用方式和注意事项对于处理二进制数据至关...

    java对象转成byte数组的3种方法

    在 Java 中,将对象转换为 byte 数组是一种常见的操作,特别是在使用 Netty 进行通信协议传输的场景中。那么,如何方便地将一个 Java 对象构造成一个 byte 数组呢? 方法 1:使用 ByteBuf 在 Netty 中,我们可以...

    java int转byte和long转byte的方法

    在Java编程中,有时我们需要将整型(int)和长整型(long)的数据转换为字节(byte),这在处理网络传输、二进制序列化或内存优化等场景中尤其常见。以下是一些关于如何在Java中进行这些转换的方法。 首先,让我们看下...

    数字类型 转换 字节数组

    可以将 Float、 Double、 与byte[]之间进行互换,从而可以在Java 的开发环境中实现C语言的Union 的功能! /** * 对数字和字节进行转换。 * 基础知识: * 假设数据存储是以大端模式存储的: * byte:...

    在Java中int和byte[]的相互转换

    相反,从byte数组转换回int,我们需要组合这些字节,将它们按正确的顺序放置,然后将结果解释为int。以下是一个实现此功能的函数: ```java public static int bytesToInt(byte[] bytes) { int i; i = (int) (...

    int、char、double与byte类型之间相互转换

    Java中的int类型占用4个字节(即32位),因此转换后的byte数组长度为4。 ```java public static byte[] intToByte(int number) { int temp = number; byte[] b = new byte[4]; for (int i = b.length - 1; i &gt;= 0...

    读取Java文件到byte数组的三种方法(总结)

    本文将介绍三种读取Java文件到byte数组的方法,供开发者参考。 ### 方法一:传统IO方式 这种方法是最常见的读取文件的方式,使用`FileInputStream`、`BufferedInputStream`和`ByteArrayOutputStream`组合实现。 `...

Global site tag (gtag.js) - Google Analytics