gpt4 book ai didi

java - 检测 DataInputStream 中的 STX 和 ETX

转载 作者:行者123 更新时间:2023-12-02 10:51:54 25 4
gpt4 key购买 nike

我正在尝试从套接字连接读取数据,并尝试找出如何获取 STX 和 ETX 字符/整数之间的数据。

响应的结构是STX SEQ DATA ETX LRC。我需要读取 STX 和 ETX 之间的所有内容并忽略校验和(LRC)。

到目前为止我已经得到了这个:

 StringBuilder sb = new StringBuilder();
try {
int c;
int prevC = 0;
while ((c = in.read()) != -1) {
if(c == 3){
break;
}else if(c == 6){
sb.append(MathOperations.convertIntToHex(c));
break;
}
else{
sb.append(MathOperations.convertIntToHex(c));
}
}
} catch (Exception e) {
LOGGER.error("Error reading loop socket ({})", e.getMessage(), e);
}

String response = sb.toString();
LOGGER.info("Received response from remote server - data ({})",response);
return response;

我当前遇到的问题是 LRC 数据也附加到字符串中。我怎样才能摆脱它?有没有更优雅的方法来只读取之间的数据?

c == 6 用于检查从服务器收到的请求的确认。

最佳答案

The problem I currently have is that the LRC data is attached to the string as well. How can i get rid of it?

简单的答案是读取 LRC 的字节并将其丢弃。

is there a more elegant way of reading only the data in between?

skipBytes(n)方法会做同样的事情。稍微优雅一点...

关于java - 检测 DataInputStream 中的 STX 和 ETX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com