当前时间为32位UNIX时间戳和时间偏移量

时间:2016-12-12 14:38:49

标签: java android timestamp bluetooth-lowenergy unix-timestamp

我使用android BLE。

需要将特征当前时间写为32位UNIX时间戳。之后写入当前时区与UTC的偏移量,以秒为单位。可能问题在于转换为32字节数组,但我不是100%肯定。

我做到了,但出了点问题。它上升非常快,最终通过0x7FFF,FFFF,即它溢出并变为负值,因为时间戳是有符号整数。

echo "The $1 has reached its limit in region $2"
where $1 would be internet gateway and $2 would be eu-west-1

2 个答案:

答案 0 :(得分:1)

关注this您正在使用权限转换。

在java中

  

默认情况下,int数据类型是32位有符号的二进制补码   整数,其最小值为-0x7FFFFFFF和最大值   0x7FFFFFFF-1 oracle

所以这只是演示文稿的问题(而不是数据)。有类似的情况,通过ARGB重复显示int - 它需要4 * 8位,因此值一次为positvie,否则为负,如果你只想显示它。

要显示所需的值,您可以将byte []转换为long,就像在此example

中一样

答案 1 :(得分:0)

我解决了这个int到字节数组代码转换的问题

byte[] offsetFromUtcByteArray = ByteBuffer.allocate(4).order(LITTLE_ENDIAN).putInt((int) offsetFromUtc).array();

 byte[] currentDate = ByteBuffer.allocate(4).order(LITTLE_ENDIAN).putInt((int) unixTime).array();