为什么 android 屏幕上会出现奇怪的符号?

Why strange symbols appear on android screen?

如果输入字符串数据,我的代码会正确执行串行 send/read 数据。如果数据是十六进制,虽然我的串行 send/read 数据正确 textview 输出是 strange.Why 奇怪的符号出现在 android 屏幕上?

我的输入:

0067123456789123456789123456FF8E6457DF0215DF820803111111DF820903222222DF820A03333333DF6F3CDFEF0602AAAADFEF0B08BBBBBBBBBBBBBBBBDFEF0E20CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDFEF0402DDDD1D

我的接收数据方法:

private void updateReceivedData(byte[] data) throws InterruptedException {

   String s = new String(data);   
   text2.setText("Incoming Mesage = " + s);
   SendSerialData(data, data.length);

}

我在 Hterm 上的串行输出(真):

0067123456789123456789123456FF8E6457DF0215DF820803111111DF820903222222DF820A03333333DF6F3CDFEF0602AAAADFEF0B08BBBBBBBBBBBBBBBBDFEF0E20CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDFEF0402DDDD1D

我的文本视图输出:

��g4Vx�#Eg�4V��dW�߂߂   """߂
333�o<���������������� 
������������������������������������

我找到了答案。而不是:

String s = new String(data);   

使用:

String s =  byteArrayToHex(data);

并添加此方法:

public static String byteArrayToHex(byte[] a) {
    StringBuilder sb = new StringBuilder(a.length * 2);
    for(byte b: a)
        sb.append(String.format("%02x", b));
    return sb.toString();
}