我正在创建一个 UDP 数据包以在 java 中配置 GPS 调制解调器。数据包的其中一个部分是电话号码,我得到了以下信息:
电话号码是 64 位。
字节 7 = 0x00(大端)。
字节 4-6 = 区号(小端)。
字节 0-3 = 其他数字(小端序)。
到目前为止我做了什么:
电话号码是:123 4567890 我将字节部分转换为十六进制:123 = 0x00007B 4567890 = 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 个字节,并且没有我知道的变量,所以我阅读了位移位并使用了如何将 24 位整数转换为 3 字节数组中的逻辑?转移它。这就是我认为我的问题所在。
字节 7 非常简单。
如果电话号码发送正确,我应该会从调制解调器得到响应,但是当在 Wire Shark 上监控它时,我看到数据包已发送,但没有发回响应。
我想知道你们是否可以看到任何错误或更好的方法来解决这个问题?
谢谢。