1

Java long データ型 (64 ビット) データを従来の C++ アプリの unsigned int (32 ビット) データ型に変換する必要があります。

データは Linux のタイムスタンプであるため、データ損失の心配はありません。これは unsigned int の制限に達するまでに何時間もかかります。

これらの数値にどのような変換を適用するか考えていますか?

前もって感謝します!

PS - データ型の例:

ジャワ - 1266336527340

C++-1266336583

どちらも同じ日付で、ほぼ同じ時間 (+/- 1 分) を生成します。

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 に答える