32ビット符号付き64ビットの符号なし
-
20-09-2019 - |
質問
私は++アプリunsigned int型(32ビット)データ型CレガシーにJavaの長いデータ型(64ビット)のデータを変換する必要があります。
データなどのデータ損失の心配はunsigned int型の制限をヒットする永劫を取るのLinuxのタイムスタンプ、ではありません。
これらの数字に適用するものを変換任意のアイデア?
事前に感謝します!
P.S。 - データ型の例:
Javaの - 1266336527340
C ++ - 1266336583
これらの両方が同じ日付を生成し、同じ時間(+/-分)約
解決
Javaのあなたが1000で分割する必要があるので、C ++のコードは、エポックからの秒数を見込んのに対し、エポックからの(ミリ秒)の数を返しますのDate.getTimeその後、切り捨てます:
int timestampAsInt = (int)(timestampAsLong / 1000);
Javaは符号なしだけでなく、符号付き整数を持っているが、これは動作するはずです。
他のヒント
long javaTime = someDate.getTime();
int cTime = (int)((javaTime + 500) / 1000);
私は切り捨ての上に丸め好むが、あなたのビジネスルールのために右であるかを決定する必要があります。
所属していません StackOverflow