java字节增加

// 添加数据

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;

}


 

转载于:https://my.oschina.net/pizazz/blog/2962834

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值