سؤال

أحتاج إلى تحويل بيانات DataType (64 بت) Java Long (64 بت) إلى نوع بيانات C ++ Legacy غير موقعة (32 بت).

لا تقلق بشأن فقدان البيانات لأن البيانات هي Linux Timestamp ، والتي ستستغرق من AEONS لضرب حد INT غير الموقّع.

أي فكرة ما هو التحول الذي يجب تطبيقه على هذه الأرقام؟

شكرا لك مقدما!

PS - مثال من نوع البيانات:

Java - 1266336527340

C ++ - 1266336583

كلاهما ينتجون نفس التاريخ ، وفي نفس الوقت (+/- دقيقة).

هل كانت مفيدة؟

المحلول

جافا Date.getTime يعيد عدد ميلي ثانية من الحقبة ، في حين يتوقع رمز C ++ عدد ثوان من الحقبة ، لذلك تحتاج إلى تقسيم 1000 ثم اقتطاع:

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

لدى Java عددًا صحيحًا موقّعًا غير موقّع ، ولكن هذا يجب أن ينجح.

نصائح أخرى

long javaTime = someDate.getTime();
int cTime = (int)((javaTime + 500) / 1000);

أفضل التقريب على الاقتطاع ، ولكن سيتعين عليك أن تقرر ما هو مناسب لقواعد عملك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top