// 添加数据
public byte[] insertdata(char id, String swapdata, byte[] resultdata) throws UnsupportedEncodingException {
int offset = 0;
int swaplen = 0, count = 0;
// byte[] buffer = new byte[swapdata.length()*2];
byte[] buffer = null;
if (swapdata != null) {
buffer = swapdata.getBytes("UTF-16LE");
count = buffer.length;
}
// for(int i=0; i<swapdata.length(); i++){
// char ch = swapdata.charAt(i);
// if(ch > 127){
// buffer[i*2] = (byte)(ch&0xff);
// buffer[i*2+1] = (byte)((ch>>8)&0xff);
// count += 2;
// }else{
// buffer[i*2] = (byte)(ch&0xff);
// buffer[i*2+1] = 0;
// count += 2;
// }
// }
//
if (resultdata == null) {
resultdata = new byte[count + 6];
} else {
byte[] temp = resultdata;
resultdata = new byte[temp.length + count + 6];
for (int i = 0; i < temp.length; i++) {
resultdata[offset++] = temp[i];
}
}
int lenth = count;
// 添加 id
resultdata[offset++] = (byte) id;
resultdata[offset++] = 0;
// 添加长度
resultdata[offset++] = (byte) (lenth & 0xff);
resultdata[offset++] = (byte) ((lenth >> 8) & 0xff);
resultdata[offset++] = (byte) ((lenth >> 16) & 0xff);
resultdata[offset++] = (byte) ((lenth >> 24) & 0xff);
for (int i = 0; i < count; i++) {
resultdata[offset++] = buffer[i];
}
return resultdata;
}
插入字节
public static String stringEncode(String swapdata) throws UnsupportedEncodingException {
int len = 0;
int count = 0;
byte[] buffer = null;
if (swapdata != null) {
buffer = swapdata.getBytes("UTF-16LE");
len = buffer.length;
}
byte[] resultdata = buffer;
int offset = 0;
count = len;
for(int i = 0; i < buffer.length; i++){
if(buffer[i]==0x38){
//复制之前的数据然后在数据末尾加入0
byte[] temp = resultdata;
resultdata = new byte[ count + 1];
count++;
for(int k=0;k<offset;k++){
resultdata[k]=temp[k];
}
resultdata[offset++]=buffer[i];
resultdata[offset++]=0x00;
}else{
resultdata[offset++] = buffer[i];
}
}
return new String(resultdata, "UTF-16LE");
}
利用空间换算 插入字节
public static byte[] encodephone(byte[] phone)
{
int len=phone.length;
byte[] temp = new byte[len*2];
int pos=0;
for(int i=0;i<len;i++)
{
if(phone[i] == 0x38)
{
temp[pos++] = 0x38;
temp[pos++] = 0x00;
}
else
{
temp[pos++] = phone[i];
}
}
byte[] ret = new byte[pos];
System.arraycopy(temp,0,ret, 0, pos);
return ret;
}