以 Unix 时间获取日期时间作为字节数组,大小为 4 个字节 Java

Getting Date Time in Unix Time as Byte Array which size is 4 bytes with Java

如何获取 unix 时间的日期时间作为字节数组,它应该在 Java 中填充 4 个字节 space?

类似的东西:

byte[] productionDate = new byte[] { (byte) 0xC8, (byte) 0x34,
                    (byte) 0x94, 0x54 };

首先:Unix time 是自 01-01-1970 00:00:00 UTC 以来的 的数字。 Java 的 System.currentTimeMillis() returns 毫秒 自 01-01-1970 00:00:00 UTC 以来。所以你必须除以 1000 才能得到 Unix 时间:

int unixTime = (int)(System.currentTimeMillis() / 1000);

那你得把int里面的四个字节取出来。您可以使用 bit shift operator >> (shift right). I'll assume you want them in big endian 命令来做到这一点:

byte[] productionDate = new byte[]{
        (byte) (unixTime >> 24),
        (byte) (unixTime >> 16),
        (byte) (unixTime >> 8),
        (byte) unixTime

};

您可以使用 ByteBuffer 进行字节操作。

int dateInSec = (int) (System.currentTimeMillis() / 1000);
byte[] bytes = ByteBuffer.allocate(4).putInt(dateInSec).array();

您可能希望将字节顺序设置为小端,因为默认为大端。

要对其进行解码,您可以这样做

int dateInSec = ByteBuffer.wrap(bytes).getInt();