为什么奇怪的符号出现在Android屏幕上?
问题描述:
如果输入字符串数据,我的代码会正确地发送/读取数据。如果数据是十六进制,虽然我的串行发送/读取数据正确的textview输出是奇怪的。为什么奇怪的符号出现在Android屏幕上?为什么奇怪的符号出现在Android屏幕上?
我的输入:
0067123456789123456789123456FF8E6457DF0215DF820803111111DF820903222222DF820A03333333DF6F3CDFEF0602AAAADFEF0B08BBBBBBBBBBBBBBBBDFEF0E20CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDFEF0402DDDD1D
我接收到的数据的方法:
private void updateReceivedData(byte[] data) throws InterruptedException {
String s = new String(data);
text2.setText("Incoming Mesage = " + s);
SendSerialData(data, data.length);
}
我上Hterm(TRUE)串行输出:
0067123456789123456789123456FF8E6457DF0215DF820803111111DF820903222222DF820A03333333DF6F3CDFEF0602AAAADFEF0B08BBBBBBBBBBBBBBBBDFEF0E20CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDFEF0402DDDD1D
我的TextView输出:
��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();
}
它看起来像你有一个字符编码的问题。看到[这里](http://*.com/questions/1536054/how-to-convert-byte-array-to-string-and-vice-versa) –
谢谢,但它对我没有用 –