關於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);
}
}