以下介紹此方法,可以彈性的存儲陣列與還原陣列:
public class debyte {
public static void main(String[] args)
{
String str1 = "qwertyuiop3456";
//假設這個字串每次產生出來byte[]陣列長度每次都不同
byte[] byt1 = str1.getBytes();
//我們先取得他的長度(此方法較為彈性,這樣可以每次皆取得該陣列的長度)
int byt1LN = byt1.length;
//我們先來宣告一個較長的陣列
byte[] solongbyte = new byte[5000];
//然後將byt1陣列寫入這個陣列中(我們從位置0開始寫),長度也一併寫進去(我們從位置4900開始寫)
System.arraycopy(byt1, 0, solongbyte, 0, byt1LN);
//先把長度值轉換成byte[]寫入
System.arraycopy(String.valueOf(byt1LN).getBytes(), 0, solongbyte, 4900, String.valueOf(byt1LN).getBytes().length);
System.out.println("======還原測試======");
//還原方法參數介紹:原文的第一個位置,原文長度的第一個位置,要解開的陣列
byte[] backtest = getB(0,4900,solongbyte);
System.out.println(new String(backtest));
}
//ini起始讀取值得位置,ls讀取該數值長度的起始位置,byte[]要拆解的陣列
public static byte[] getB(int initial,int ls,byte[] Len400)
{
int pl=0;
int le = ls +5;
for(int i=ls;i<le;i++)
{
int temp = (int)Len400[i];
if(temp == 0)
{
pl=i;
break;
}
}
pl = pl - ls;
byte[] plb = new byte[pl];
System.arraycopy(Len400, ls, plb, 0, pl);
int reback_plen = Integer.parseInt(new String(plb));
byte[] backp = new byte[reback_plen];
System.arraycopy(Len400, initial, backp, 0, reback_plen);
return backp;
}
}
JAVA檔下載:file
沒有留言:
張貼留言