关于int和byte[]数组的转换
--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3891747.html "谢谢--
众所周知java有8种基本类型,分别是低级变量(byte,char,boolean,shot)和高级变量(int,long,double,float),
低级变量会自动转化成高级变量,而高级变量则要用强制转换才能成为低级变量,
可是在文件传输和网络传输当中,由于计算机都是以二进制来存储数据的,所以很多时候我们需要将要用到的数据转换成字节流来完成传输
那么int和byte[]数组之间又是如何转换的呢?
很多人可能会马上想到String类型中的getBytes()方法来实现byte[]的转换,
但可惜的是在int中java没有并封装有像这样的一个方法。
仔细的查看API文档,我们会发现,其实java还是提供了不错的解决方案的,
在java.io包下有这么四个类,分别是输出流ByteArrayOutputStream,DataOutputStream和输入流ByteArrayInputStream和DataInputStream
通过这四个IO流即可实现int和byte[]数组的转换。
以下是代码实例:
package com.xhj.data;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
/**
* int 和 byte[]的相互转换
*
* @author XIEHEJUN
*
*/
public class IntToButeArray {
/**
* 整数转换成字节数组 关键技术:ByteArrayOutputStream和DataOutputStream
*
* @param n
* 需要转换整数
* @return
*/
public static byte[] intToButeArray(int n) {
byte[] byteArray = null;
try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
DataOutputStream dataOut = new DataOutputStream(byteOut);
dataOut.writeInt(n);
byteArray = byteOut.toByteArray();
for (byte b : byteArray) {
System.out.println(" " + b);
}
} catch (IOException e) {
e.printStackTrace();
}
return byteArray;
}
/**
* 字节数组转换成整数 关键技术:ByteArrayInputStream和DataInputStream
*
* @param byteArray
* 需要转换的字节数组
* @return
*/
public static int byteArrayToInt(byte[] byteArray) {
int n = 0;
try {
ByteArrayInputStream byteInput = new ByteArrayInputStream(byteArray);
DataInputStream dataInput = new DataInputStream(byteInput);
n = dataInput.readInt();
System.out.println("整数为: " + n);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return n;
}
public static void main(String[] args) {
byte[] byteArray = intToButeArray(105);
byteArrayToInt(byteArray);
}
}