以下介紹此方法,可以彈性的存儲陣列與還原陣列:
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
沒有留言:
張貼留言