无法获得全长消息

时间:2016-08-01 12:18:48

标签: java android bytearray

我已经实现了一个逻辑来从字节数组中获取消息。

public getInfo(byte[] hi) {

        type = ....

        sequence = ....

        int ack = ....

        int lastbyte = ....;

        int isUTF8byte = .....;

        actual_msg += (char) hi[CHAR1];
        actual_msg += (char) hi[CHAR2];
        actual_msg += (char) hi[CHAR3];
        actual_msg += (char) hi[CHAR4];
        actual_msg += (char) hi[CHAR5];
    }

问题是它只给出了消息的前五个字符。我的意思是如果字节数组包含Hello How are you,我只得到输出为Hello。字节数组具有带有char消息的第3到第7字节(5字节)。

我认为消息中剩余字符的逻辑应该在for循环内部,因为目前我有逻辑只能读取前5个字符。所有消息集的第0到第2字节都是相同的。我只关注3到7个字节。

我该如何实现?

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找这个:

byte [] subArray = Arrays.copyOfRange(bytearray, startpos, endpos);
String str = new String(subArray, StandardCharsets.UTF_8);

答案 1 :(得分:1)

如果我正确理解你的问题,你需要像

这样的东西
public String getMessage(byte[] bytes) {
    StringBuilder message = new StringBuilder(); 
    int index = 0
    while (index < bytes.length) {
        byte[] partOfMessage = Arrays.copyOfRange(bytes, index + 3, index + 7);
        message.append(new String(partOfMessage , StandardCharsets.UTF_8));
        index += 7;
    }
    return message.toString();
}