如何在Android中将输入流转换为字节数组以字符串

时间:2018-09-10 10:42:26

标签: android arduino serial-port inputstream bytearrayoutputstream

我正在使用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���

使用所有编码。

2 个答案:

答案 0 :(得分:0)

您是否使用扩展的ascii(> 127)?

答案 1 :(得分:0)

您可以尝试以下功能:

private String Buff2String(byte[] buff) {
    String retVal = "";

    for(byte c : buff) {
        int i = c & 0xFF;
        retVal += (char)i;
    }

    return retVal;
}