我已经实现了一个逻辑来从字节数组中获取消息。
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个字节。
我该如何实现?
答案 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();
}