在做加解密的时候,遇到了一个问题:解密出来的字符串中间,不可预期地出现了一些NULL域,如图中输出:
图中红框中的NUL输出就是这些NULL域,这些NULL域影响了业务的后续处理,所以必须去除这些NUL。
研究了一下这个输出,不难发现这些NULL输出,在字符串的字节数组里很容易发现,这些NULL也是占“地儿”的。所以只需要将这些"地儿"去除:去掉ascii码值为0的比特。
- /**
- * 去除字符串中的null域
- * @param string
- * @return
- * @throws UnsupportedEncodingException
- */
- public static String trimnull(String string) throws UnsupportedEncodingException
- {
- ArrayList<Byte> list = new ArrayList<Byte>();
- byte[] bytes = string.getBytes("UTF-8");
- for(int i=0;bytes!=null&&i<bytes.length;i++){
- if(0!=bytes[i]){
- list.add(bytes[i]);
- }
- }
- byte[] newbytes = new byte[list.size()];
- for(int i = 0 ; i<list.size();i++){
- newbytes[i]=(Byte) list.get(i);
- }
- String str = new String(newbytes,"UTF-8");
- return str;
- }