为什么 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();
}
如果输入字符串数据,我的代码会正确执行串行 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();
}