gpt4 book ai didi

Java如何从udp数据包中的Sint64解析UTC

转载 作者:行者123 更新时间:2023-12-01 14:58:11 26 4
gpt4 key购买 nike

我收到一个 UDP 数据包,其中包含 Sint64 形式的 UTC。如何将其转换为 UTC 时间?

Sint64 = 8 字节我有一个分配的字节数组如下 8。这是进入“receivedData”字节数组的唯一内容

    DatagramSocket serverSocket = new DatagramSocket(18000);
byte[] receiveData = new byte[8];

while (true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);

//not sure how I should be reading the raw binary data back into UTC object

}

最佳答案

首先,需要将字节数组转换为long(64位有符号整数):

ByteBuffer buf = ByteBuffer.wrap(receiveData);
long utcTime = buf.getLong();

此代码假定 64 位值以处理器运行应用程序时使用的相同字节顺序存储(小端字节序与大端字节序)。

您没有指定 64 位值到底是什么。我假设它是自 1970 年 1 月 1 日 0:00 UTC 以来的毫秒数。

因此要构造日期,请使用以下代码:

Date dateTime = new Date(utcTime);

如果您有不同的零点或不同的单位,则需要相应地进行调整。

关于Java如何从udp数据包中的Sint64解析UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14074136/

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