Pregunta

Necesito convertir datos Java largo tipo de datos (64 bits) en legado c ++ aplicación unsigned int (32 bits) tipo de datos.

No se preocupa por la pérdida de datos como los datos de marca de tiempo es Linux, lo que llevaría eones para golpear límite unsigned int.

Cualquier idea de lo que la transformación a aplicar a estos números?

Gracias de antemano!

P.S. --tipos de datos ejemplo:

Java - 1266336527340

C ++ - 1266336583

Ambos producen misma fecha, y sobre el mismo tiempo (+/- un minuto).

¿Fue útil?

Solución

date.getTime devuelve el número de milisegundos de la época, mientras que el código C ++ espera que el número de segundos de la época, por lo que es necesario dividir por 1000 entonces truncar:

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

Java tiene solamente un entero no firmado, pero esto debería funcionar.

Otros consejos

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

Yo prefiero redondeo sobre el truncamiento, pero usted tendrá que decidir cuál es el adecuado para sus reglas de negocio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top