在做加解密的时候,遇到了一个问题:解密出来的字符串中间,不可预期地出现了一些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;
}
如此,输出的内容就不含NULL域了。