gpt4 book ai didi

java - 比较十六进制值java

转载 作者:行者123 更新时间:2023-12-02 08:38:15 27 4
gpt4 key购买 nike

重复: Compare hexadecimal and decimal values

我正在java中实现x-modem协议(protocol),我正在读取串行端口并存储在大小为1024的字节数组中。然后我将数据转换为字符串我在一个数据包中得到133个字节,问题是我无法比较字符串和字节数组中的十六进制值。我必须在数据中找到 SOH,即 0x01,EOT=0x02,但我无法理解如何做到这一点。

这是代码的一部分:

char SOH=0X01;
public void readResponse()
{
byte[] buffer = new byte[1024];
int len = -1;
String data;
try
{
while ((len = this.getIn().read(buffer)) > -1)
{
data = new String(buffer,0,len);
time = System.currentTimeMillis();
data = new String(buffer, 0, len);
System.out.println("Data length is "+data.length());
System.out.println(data);
for(int i=0;i<carray.length;i++)
{
if(data.CharAt(i)==SOH)
{
System.out.println("SOH["+i+"]"+data.CharAt(i));
}
}
}

提前致谢。

最佳答案

处理二进制数据时不要使用String/char。请改用byte[]/byte。在尝试修复任何其他错误之前先解决这个问题。

char 是 Java 中的 16 位值,它与 C char(定义为字节)不同。 Java 中与 C char 最接近的是 byte(尽管它是有符号的)。

关于java - 比较十六进制值java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/720932/

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