如何将输入流转换为字节数组到 android 中的字符串
how to convert input stream to byte array to string in android
我正在研究 RFID 串口。在这里我有一个源代码,像这样提到 new SerialPort(new File("/dev/ttyS3"), 19200);
它工作完美我得到了一个输出,但不是很好的编码我尝试了所有编码,但它不工作。
我从 InputStream
得到输出:
mInputStream = mSerialPort.getInputStream();
private byte[] reciveBuffer=new byte[128];;
private int size = 0;
size = mInputStream.read(reciveBuffer);
//i checked all encodings
String message = new String(reciveBuffer,0, size,Charset.forName("iso-8859-1"));
String message2 = new String(reciveBuffer,0, size,Charset.forName("windows-1252"));
assert message2.charAt(1) == '\u00E4';
String message3 = new String(reciveBuffer,0, size,Charset.forName("US-ASCII"));
String encode=((reciveBuffer[0] & 128) == 0) ? "UTF-8" : "windows-1252";
String display = new String(reciveBuffer, 0, size);
但在字符串中我得到:
3������`������`��xf���f���
来自所有编码。
您使用的是扩展 ascii (>127) 吗?
您可以尝试以下功能:
private String Buff2String(byte[] buff) {
String retVal = "";
for(byte c : buff) {
int i = c & 0xFF;
retVal += (char)i;
}
return retVal;
}
我正在研究 RFID 串口。在这里我有一个源代码,像这样提到 new SerialPort(new File("/dev/ttyS3"), 19200);
它工作完美我得到了一个输出,但不是很好的编码我尝试了所有编码,但它不工作。
我从 InputStream
得到输出:
mInputStream = mSerialPort.getInputStream();
private byte[] reciveBuffer=new byte[128];;
private int size = 0;
size = mInputStream.read(reciveBuffer);
//i checked all encodings
String message = new String(reciveBuffer,0, size,Charset.forName("iso-8859-1"));
String message2 = new String(reciveBuffer,0, size,Charset.forName("windows-1252"));
assert message2.charAt(1) == '\u00E4';
String message3 = new String(reciveBuffer,0, size,Charset.forName("US-ASCII"));
String encode=((reciveBuffer[0] & 128) == 0) ? "UTF-8" : "windows-1252";
String display = new String(reciveBuffer, 0, size);
但在字符串中我得到:
3������`������`��xf���f���
来自所有编码。
您使用的是扩展 ascii (>127) 吗?
您可以尝试以下功能:
private String Buff2String(byte[] buff) {
String retVal = "";
for(byte c : buff) {
int i = c & 0xFF;
retVal += (char)i;
}
return retVal;
}