gpt4 book ai didi

java - 使用 UDP 数据包以位特定顺序发送电话号码 Java

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:43 25 4
gpt4 key购买 nike

我正在创建一个 UDP 数据包来在 java 中配置 GPS 调制解调器。数据包的其中一个部分是电话号码,我已获得以下信息:

电话号码是 64 位。

字节 7 = 0x00(大端)。

字节 4-6 = 区号(小端)。

字节 0-3 = 其他数字(小端)。

到目前为止我做了什么:

电话号码是:123 4567890我将字节部分转换为十六进制:123 = 0x00007B4567890 = 0x0045B352

    ByteBuffer UDPConfigModem = ByteBuffer.allocate(8);

byte areaCode1 = (0x00007B >> 8) & 0xFF;
byte areaCode2 = (0x00007B >> 16) & 0xFF;

UDPConfigModem.putInt((byte) 0x0045B352).order(ByteOrder.LITTLE_ENDIAN);
UDPConfigModem.put((byte) areaCode2).order(ByteOrder.LITTLE_ENDIAN);
UDPConfigModem.put((byte) areaCode1).order(ByteOrder.LITTLE_ENDIAN);
UDPConfigModem.put((byte) 0x00007B).order(ByteOrder.LITTLE_ENDIAN);
UDPConfigModem.put((byte) 0x00);

因为其他数字需要 4 个字节,所以我只是使用了 putInt 并对字节进行了排序,所以我很确定这不是问题。

区域代码需要 3 个字节,据我所知,没有一个变量具有该区域代码,因此我阅读了位移位并使用 How do I convert a 24-bit integer into a 3-byte array? 中的逻辑来对其进行移位。我认为这就是我的问题所在。

字节 7 非常简单。

如果电话号码发送正确,我应该会从调制解调器收到响应,但是当在 wire shark 上监视它时,我看到数据包已发送,但没有发回响应。

我想知道你们是否能看到任何错误或更好的方法来解决这个问题?

谢谢。

最佳答案

你的代码很困惑。字节不是小端或大端。字节顺序仅适用于表示较大数字(例如整数)的字节序列。 ByteBuffer 上的 .order 交换整个缓冲区,这不是您想要的。

putInt((byte) 0x0045B352) 不起作用 - 您可能只会得到该整数的低字节。我建议你使用这个答案https://stackoverflow.com/a/4378416/116509并将字节一一放入(没有理由使用强制转换)。

关于java - 使用 UDP 数据包以位特定顺序发送电话号码 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11956224/

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