Question

Je dois convertir des données Java à long type de données (64 bits) dans l'héritage c ++ application unsigned int (32 bits) type de données.

Pas de soucis au sujet de la perte de données que les données sont horodatage Linux, qui prendrait éons frapper limite unsigned int.

Toute idée de ce que la transformation à appliquer à ces chiffres?

Merci d'avance!

P.S. - par exemple des types de données:

Java - 1266336527340

C ++ - 1266336583

Les deux produisent la même date, et environ en même temps (+/- une minute).

Était-ce utile?

La solution

Java de Date.getTime renvoie le nombre de millisecondes de l'époque, alors que le code C ++ prévoit que le nombre de de l'époque, de sorte que vous devez diviser par 1000 secondes puis tronquer:

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

Java ne dispose que d'un entier signé non signé, mais cela devrait fonctionner.

Autres conseils

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

Je préfère arrondir troncature, mais vous devrez décider qui est bon pour vos règles métier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top