1

我需要将 Java long 数据类型(64 位)数据转换为旧版 c++ 应用程序 unsigned int(32 位)数据类型。

不用担心数据丢失,因为数据是 Linux 时间戳,这需要很长时间才能达到 unsigned int 限制。

知道要对这些数字应用什么转换吗?

提前致谢!

PS - 数据类型示例:

爪哇 - 1266336527340

C++ - 1266336583

它们都产生相同的日期和大约相同的时间(+/- 一分钟)。

4

2 回答 2

3

Java 的Date.getTime返回从纪元开始的毫秒数,而 C++ 代码期望从纪元开始的秒数,因此您需要除以 1000 然后截断:

int timestampAsInt = (int)(timestampAsLong / 1000);

Java只有一个有符号整数而不是无符号整数,但这应该可以工作。

于 2010-02-16T16:03:10.103 回答
1
long javaTime = someDate.getTime();
int cTime = (int)((javaTime + 500) / 1000);

我更喜欢四舍五入而不是截断,但您必须决定哪个适合您的业务规则。

于 2010-02-16T16:47:54.300 回答