我需要将Java long数据类型(64位)数据转换为遗留的c++应用程序无符号整数(32位)数据类型。
不用担心数据丢失,因为数据是Linux时间戳,这将花费亿万年的时间才能达到无符号整数限制。
你知道要对这些数字应用什么变换吗?
提前感谢!
P.S. -数据类型示例:
Java - 1266336527340
C++ - 1266336583
它们都产生相同的日期和大约相同的时间(+/-一分钟)。
发布于 2010-02-17 00:03:10
Java的Date.getTime返回来自纪元的毫秒数,而C++代码期望从纪元返回的秒数,因此您需要除以1000,然后截断:
int timestampAsInt = (int)(timestampAsLong / 1000);
Java只有一个无符号的带符号整数,但这应该是可行的。
发布于 2010-02-17 00:47:54
long javaTime = someDate.getTime();
int cTime = (int)((javaTime + 500) / 1000);
我更喜欢舍入而不是截断,但您必须决定哪一个适合您的业务规则。
https://stackoverflow.com/questions/2274193
复制相似问题