public static byte[] escape(byte[] oData){
		byte[] nData = new byte[oData.length];
		int i = 0;
		for(byte b : oData){
			if( 2 == b){
				byte[] tmp = new byte[i+2];
				System.arraycopy(nData, 0, tmp, 0, i);
				tmp[i] = 4;
				tmp[i + 1] = 5;
				nData = new byte[nData.length + 1];
				System.arraycopy(tmp, 0, nData, 0, tmp.length);
				i += 2;
			}else if(3 == b){
				byte[] tmp = new byte[i+2];
				System.arraycopy(nData, 0, tmp, 0, i);
				tmp[i] = 4;
				tmp[i + 1] = 6;
				nData = new byte[nData.length + 1];
				System.arraycopy(tmp, 0, nData, 0, tmp.length);
				i += 2;
			}else if(4 == b){
				byte[] tmp = new byte[i+2];
				System.arraycopy(nData, 0, tmp, 0, i);
				tmp[i] = 4;
				tmp[i + 1] = 4;
				nData = new byte[nData.length + 1];
				System.arraycopy(tmp, 0, nData, 0, tmp.length);
				i += 2;
			}else{
				nData[i] = b;
				i++;
			}
		}
		//debug
		//System.out.println("escape bytes:" + dump(nData));
		return nData;
	}