// 添加数据
publicbyte[] insertdata(charid, String swapdata,byte[] resultdata)throwsUnsupportedEncodingException {
intoffset = 0;
intswaplen= 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(inti=0; i
// charch= 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 =newbyte[count + 6];
}else{
byte[] temp = resultdata;
resultdata =newbyte[temp.length+ count + 6];
for(inti = 0; i < temp.length; i++) {
resultdata[offset++] = temp[i];
}
}
intlenth = 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(inti = 0; i < count; i++) {
resultdata[offset++] = buffer[i];
}
returnresultdata;
}
插入字节
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
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
{
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;
}