将字节转换为字符串

时间:2015-08-17 18:21:43

标签: android bluetooth

我正在尝试将字节转换为字符串。字节从蓝牙数据包中恢复并分成数组。数据很好,但它显示了接收数据的整数值,但我需要显示一个问题。 IE值显示65但我需要" A" textview的字符。

encodeBytes中的前10个字节发送到蓝牙{ABCDEFGHI},logcat显示6566676869707172730

        byte[] encodedBytes = new byte[160];
        System.arraycopy(readBuf, 0, encodedBytes, 0, encodedBytes.length);


            Log.d("TAG", "Tiles data   ");
            strArrayTitle[0]="";                    // clear


            for (int i = 0; i < 10; i++) {          // get first 10 chars
              Byte piece = (encodedBytes[i]);
              strArrayTitle[0] = strArrayTitle[0] +(piece);

            }

            Log.d("TAG", "String Data     " + strArrayTitle[0]);

        }

我根据答案做了一些修改并取得了一些进展。我将新字节更改为10并转换为字符串。我可以解析数据,以便一次转换所有160个字节吗?

        byte[] encodedBytes = new byte[10];
        System.arraycopy(readBuf, 0, encodedBytes, 0, encodedBytes.length);

        String title = new String(encodedBytes);

            Log.d("TAG", "Tiles data   " + title);

2 个答案:

答案 0 :(得分:1)

尝试制作像这样的字符串

String title = new String(strArrayTitle);

其中strArrayTitle是一个byte [];

答案 1 :(得分:0)

这是我解决问题的方法。我将readbuf分成几部分,然后转换为字符串。

        String[] Titled = new String[16];
        byte[] encodedBytes = new byte[10];


        for (int f=0;f < 5;f++) {

            System.arraycopy(readBuf, (f * 10), encodedBytes, 0,  10);
            Titled[f] = new String(encodedBytes);
            Log.d("TAG", "F1  " + f);
        }


            Log.d("TAG", "Tiles data 1  " + Titled[0]);
            Log.d("TAG", "Tiles data 2  " + Titled[1]);
            Log.d("TAG", "Tiles data 3  " + Titled[3]);
            Log.d("TAG", "Tiles data 4  " + Titled[4]);


        }