Domanda

Ho bisogno di convertire i dati Java lunga tipo di dati (64-bit) in eredità c ++ applicazione unsigned int (32 bit) tipo di dati.

Non ci sono preoccupazioni circa la perdita di dati, come i dati è timestamp Linux, che avrebbe preso eoni di colpire limite unsigned int.

Qualche idea di cosa trasformazione da applicare a questi numeri?

Grazie in anticipo!

P.S. - tipi di dati esempio:

Java - 1266336527340

C ++ - 1.266.336,583 mila

Entrambi producono stessa data, e circa lo stesso tempo (+/- un minuto).

È stato utile?

Soluzione

Date.getTime restituisce il numero di millisecondi di epoca, mentre il codice C ++ prevede che il numero di secondi di epoca, quindi è necessario dividere per 1000 poi troncare:

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

Java ha solo un intero con segno non senza segno, ma questo dovrebbe funzionare.

Altri suggerimenti

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

Io preferisco l'arrotondamento sopra troncamento, ma si dovrà decidere che è giusto per le vostre regole di business.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top