以 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();
如何获取 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();