Кодировать долго в int и наоборот - PullRequest
0 голосов
/ 27 марта 2020

Если у меня есть приложение, Ryno, которое выдает уникальные увеличивающиеся длинные числа. У меня есть другое приложение, Cyan, которое отправляет сообщение и нуждается в уникальном целочисленном идентификаторе. Я хотел бы использовать номер от Ryno в качестве идентификатора сообщения в Cyan. Есть ли способ кодировать долго, чтобы int. Cyan не будет отправлять не более 1 миллиарда сообщений

1 Ответ

0 голосов
/ 27 марта 2020

Работает просто отлично

    long f = 10292029202924l;
    System.out.println(f);
    int v = (int)f;
    System.out.println(v);
    System.out.println((f & xFFFFFFFF);

печатает

10292029202924
1287561708
1287561708

    f = -1L;
    v = (int)f;
    System.out.println(v);
    v = (int)(f & 0x7FFFFFFF); // mask off sign extension
    System.out.println(v);

отпечатки

-1
2147483647

...