我需要将Java长数据类型(64位)数据转换为旧版c ++ app unsigned int(32位)数据类型。
不用担心数据丢失,因为数据是Linux时间戳,这会使永久性达到无符号的int限制。
知道要对这些数字应用什么转换?
提前致谢!
P.S。 - 数据类型示例:
Java - 1266336527340
C ++ - 1266336583
它们都产生相同的日期,大约相同的时间(+/-一分钟)。
答案 0 :(得分:3)
Java的Date.getTime从纪元返回毫秒的数量,而C ++代码需要从纪元开始的秒的数量,所以你需要划分然后截去1000:
int timestampAsInt = (int)(timestampAsLong / 1000);
Java只有一个未签名的有符号整数,但这应该可行。
答案 1 :(得分:1)
long javaTime = someDate.getTime();
int cTime = (int)((javaTime + 500) / 1000);
我更喜欢舍入截断,但您必须决定哪个适合您的业务规则。