查看原文:http://www.ibloger.net/article/147.html

Java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送、者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型。下面有两种方式。

方法一

Java
/** 
 * int到byte[] 
 * @param i 
 * @return 
 */  
public static byte[] intToByteArray(int i) {  
    byte[] result = new byte[4];  
    // 由高位到低位  
    result[0] = (byte) ((i >> 24) & 0xFF);  
    result[1] = (byte) ((i >> 16) & 0xFF);  
    result[2] = (byte) ((i >> 8) & 0xFF);  
    result[3] = (byte) (i & 0xFF);  
    return result;  
}  
  
/** 
 * byte[]转int 
 * @param bytes 
 * @return 
 */  
public static int byteArrayToInt(byte[] bytes) {  
    int value = 0;  
    // 由高位到低位  
    for (int i = 0; i < 4; i++) {  
        int shift = (4 - 1 - i) * 8;  
        value += (bytes[i] & 0x000000FF) << shift;// 往高位游  
    }  
    return value;  
}  
  
public static void main(String[] args) {  
    byte[] b = intToByteArray(128);  
    System.out.println(Arrays.toString(b));  
      
    int i = byteArrayToInt(b);  
    System.out.println(i);  
}

方法二

Java
/** 
 * 此方法可以对string类型,float类型,char类型等 来与 byte类型的转换 
 * @param args 
 */  
public static void main(String[] args) {  
    ByteArrayOutputStream baos = new ByteArrayOutputStream();  
    DataOutputStream dos = new DataOutputStream(baos);  
    try {  
        // int转换byte数组  
        dos.writeByte(-12);  
        dos.writeLong(12);  
        dos.writeChar('1');  
        dos.writeFloat(1.01f);  
        dos.writeUTF("好");  
    } catch (IOException e) {  
        e.printStackTrace();  
    }  
  
    byte[] aa = baos.toByteArray();  
    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());  
    DataInputStream dis = new DataInputStream(bais);  
  
    // byte转换int  
    try {  
         System.out.println(dis.readByte());  
         System.out.println(dis.readLong());  
         System.out.println(dis.readChar());  
         System.out.println(dis.readFloat());  
         System.out.println(dis.readUTF());  
    } catch (IOException e) {  
        e.printStackTrace();  
    }  
    try {  
        dos.close();  
        dis.close();  
    } catch (IOException e) {  
        e.printStackTrace();  
    }  
}

补充

方法1中的 int到byte[],还可以使用下面的ByteBuffer方式,结果一样,实例如下

Java
import java.nio.ByteBuffer;

public class RandomUtil {
public static byte[] intToByteArray(int i) {  
    byte[] result = new byte[4];  
    // 由高位到低位  
    result[0] = (byte) ((i >> 24) & 0xFF);  
    result[1] = (byte) ((i >> 16) & 0xFF);  
    result[2] = (byte) ((i >> 8) & 0xFF);  
    result[3] = (byte) (i & 0xFF);  
    return result;  
}

public static void main(String[] args) {
int v = 123456;
byte[] bytes = ByteBuffer.allocate(4).putInt(v).array();
for (byte t : bytes) {
System.out.println(t);
}
System.out.println("----- 分割线 -------");
byte[] bytes2 = intToByteArray(v);
for (byte t : bytes2) {
System.out.println(t);
}
}
}

输出
0
1
-30
64
----- 分割线 -------
0
1
-30
64

byte数组与int类型互相转换的几种方式相关推荐

  1. java中byte数组与int类型的转换(两种方式)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  2. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  3. byte[] 数组和字符串的转换,与byte[] 数组和int类型的之间的转化

    我们先来看看byte bool  int ushort  等的定义 首先时byte[]数组与string之间的转换 string 转换位byte[] 数组 string str = "1-1 ...

  4. byte[]数组和int之间的转换

    这里简单记录下两种转换方式: 第一种: 1.int与byte[]之间的转换(类似的byte short,long型) [java] view plaincopy /** * 将int数值转换为占四个字 ...

  5. Java中byte[]数组和int之间的转换

    在最近的项目中需要用到byte[]和int互转,找了一些资料选了其中感觉蛮不错的一种解决方法记录一下. 转自:http://blog.csdn.net/sunnyfans/article/detail ...

  6. 【delphi】Byte数组与String类型的转换

    string string = AnsiString = 长字符串,理论上长度不受限制,但其实受限于最大寻址范围2的32次方=4G字节: 变量Str名字是一个指针,指向位于堆内存的字符序列,字符序列起 ...

  7. java byte数组转long_Java中byte、byte数组与int、long的转换详解

    一.Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) ...

  8. java byte转成int数组_Java任意长度byte数组转换为int数组的方法

    前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...

  9. java byte数组转int数组_Java任意长度byte数组转换为int数组的方法

    前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...

最新文章

  1. Java JPanel的使用
  2. linux中三个time:atime、mtime、ctime
  3. 编程之美-求二进制数中1的个数方法整理
  4. Design Pattern: Observer Pattern
  5. VTK:PolyData之CellLocatorVisualization
  6. 玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试
  7. 我从未看过荒原写作背景_您从未听说过的最佳数据科学认证
  8. 《Python地理数据处理》——导读
  9. Linux系统编程4:入门篇之最强编辑器vim的使用攻略
  10. 25条div+CSS编程提醒及小技巧整理
  11. opencv函数medianBlur( );
  12. 华为认证HCNA知识点
  13. 微信公众号获得城市及街道位置信息
  14. 理解充分条件与必要条件
  15. mysql容灾备份和恢复_关于容灾备份和恢复
  16. 移动硬盘丢失的分区可以恢复吗
  17. 超详细open vn搭建之Linux亲测可用
  18. PHPCMSV9 企业黄页 黄页企业模板添加方法
  19. 我在华为工作十年的感悟——徐家骏
  20. 关于Unity 5.x Lightmap Shader 编译过慢的分析

热门文章

  1. 归并求逆序对算法图文详解
  2. JAVA快速排序过程图解(10步之内看懂)
  3. VMware Workstation Pro 17虚拟机软件详细安装教程
  4. yh的生日,我的策划
  5. c语言万年历编程规律,用C语言如何编写“万年历”
  6. 百度地图 - 使用数据可视化MapVGL
  7. 从日志文件解决ArcGIS Server性能低下问题的步骤(1)
  8. 涂鸦wifi智能插座(BK7231N/BK7231T)刷开源固件,实现mqttt本地化接入homeassistant
  9. 【Redis核心原理和应用实践】原理 8:有备无患 —— 主从同步
  10. 计算机配置的网关,电脑的默认网关怎么设置?