如何在Android中将字节数组转换为不包含0x00字符的字符串
解密例程的结果返回如下字节数组: 3030303030303031000000000000000 应该转换为(int)00000001,但是我不能去掉尾随的0x00。实现这一目标的最佳方式是什么如何在Android中将字节数组转换为不包含0x00字符的字符串,android,arrays,string,byte,Android,Arrays,String,Byte,解密例程的结果返回如下字节数组: 3030303030303031000000000000000 应该转换为(int)00000001,但是我不能去掉尾随的0x00。实现这一目标的最佳方式是什么 任何帮助都将不胜感激,谢谢 为什么不使用替换方法 String foo = new String(myBytes); foo = foo.replace((char)0, ''); // Character with zero Integer result = Integer.valueOf(foo)
任何帮助都将不胜感激,谢谢 为什么不使用替换方法
String foo = new String(myBytes);
foo = foo.replace((char)0, ''); // Character with zero
Integer result = Integer.valueOf(foo);
或者更好的是,一个过滤字符串的正则表达式,去掉0-9范围之外的任何内容
String foo = new String(myBytes);
foo = foo.replace((char)0, ''); // Character with zero
Integer result = Integer.valueOf(foo);
找到了在字节数组中修剪尾部0x00的解决方法(替换或修剪无效):
公共静态字符串bytesToString(字节[]数据){
字符串dataOut=“”;
对于(int i=0;i
因此,如果不是1,则将其设为0并删除尾随的0?那么3031100应该是00011?不,让我重新表述一下:我有这个16字节的数组[0x30 0x30…0x31 0x00 0x00…]。0x30是ASCII“0”,0x31是“1”。。。如果我只是发出…新字符串(myBytes)并尝试将其转换为int,则得到:java.lang.NumberFormatException:Invalid int:“00000001����������������"感谢zgc7009,它以肮脏的方式获得了它,但现在正在工作:公共静态字符串bytesToString(byte[]data){String dataOut=“”;for(int i=0;ipublic static String bytesToString(byte[] data) {
String dataOut = "";
for (int i = 0; i < data.length; i++) {
if (data[i] != 0x00)
dataOut += (char)data[i];
}
return dataOut;
}