Вопрос

Мне нужно преобразовать данные длинного типа данных Java (64-битные) в устаревший тип данных приложения C++ unsigned int (32-битный).

Не беспокойтесь о потере данных, поскольку данные представляют собой временную метку Linux, и для достижения предела беззнакового целого числа потребуются эоны.

Есть идеи, какое преобразование применить к этим числам?

Заранее спасибо!

P.S.- пример типов данных:

Ява - 1266336527340

С++ - 1266336583

Они оба выдают одну и ту же дату и примерно в одно и то же время (+/- минуту).

Это было полезно?

Решение

Java Дата.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