我需要将 Java long 数据类型(64 位)数据转换为旧版 c++ 应用程序 unsigned int(32 位)数据类型。
不用担心数据丢失,因为数据是 Linux 时间戳,这需要很长时间才能达到 unsigned int 限制。
知道要对这些数字应用什么转换吗?
提前致谢!
PS - 数据类型示例:
爪哇 - 1266336527340
C++ - 1266336583
它们都产生相同的日期和大约相同的时间(+/- 一分钟)。
我需要将 Java long 数据类型(64 位)数据转换为旧版 c++ 应用程序 unsigned int(32 位)数据类型。
不用担心数据丢失,因为数据是 Linux 时间戳,这需要很长时间才能达到 unsigned int 限制。
知道要对这些数字应用什么转换吗?
提前致谢!
PS - 数据类型示例:
爪哇 - 1266336527340
C++ - 1266336583
它们都产生相同的日期和大约相同的时间(+/- 一分钟)。
Java 的Date.getTime返回从纪元开始的毫秒数,而 C++ 代码期望从纪元开始的秒数,因此您需要除以 1000 然后截断:
int timestampAsInt = (int)(timestampAsLong / 1000);
Java只有一个有符号整数而不是无符号整数,但这应该可以工作。
long javaTime = someDate.getTime();
int cTime = (int)((javaTime + 500) / 1000);
我更喜欢四舍五入而不是截断,但您必须决定哪个适合您的业务规则。