如何在Android中将字节数组转换为不包含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)

解密例程的结果返回如下字节数组:

3030303030303031000000000000000

应该转换为(int)00000001,但是我不能去掉尾随的0x00。实现这一目标的最佳方式是什么


任何帮助都将不胜感激,谢谢

为什么不使用替换方法

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; }