java字符串中NUL域的去除


在做加解密的时候,遇到了一个问题:解密出来的字符串中间,不可预期地出现了一些NULL域,如图中输出:

图中红框中的NUL输出就是这些NULL域,这些NULL域影响了业务的后续处理,所以必须去除这些NUL。

研究了一下这个输出,不难发现这些NULL输出,在字符串的字节数组里很容易发现,这些NULL也是占“地儿”的。所以只需要将这些"地儿"去除:去掉ascii码值为0的比特。

  1. /** 
  2.      * 去除字符串中的null域 
  3.      * @param string 
  4.      * @return 
  5.      * @throws UnsupportedEncodingException  
  6.      */  
  7.     public static String trimnull(String string) throws UnsupportedEncodingException  
  8.     {  
  9.         ArrayList<Byte> list = new ArrayList<Byte>();  
  10.         byte[] bytes = string.getBytes("UTF-8");  
  11.         for(int i=0;bytes!=null&&i<bytes.length;i++){  
  12.             if(0!=bytes[i]){  
  13.                 list.add(bytes[i]);  
  14.             }  
  15.         }  
  16.         byte[] newbytes = new byte[list.size()];  
  17.         for(int i = 0 ; i<list.size();i++){  
  18.             newbytes[i]=(Byte) list.get(i);   
  19.         }  
  20.         String str = new String(newbytes,"UTF-8");  
  21.         return str;  
  22.     }  
如此,输出的内容就不含NULL域了。
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值