В общем случае не существует решения для вашей задачи.
Памяти одного целого числа просто недостаточно для хранения информации о нескольких целых числах.
Кстати: номер вашего примера 8559800019119 не уместится в 32 бита.Так что это будет работать только на 64-битных платформах.В 32-разрядном типе данных является число с плавающей запятой двойной точности, а не целое число.
Однако при определенных обстоятельствах может возникнуть обходной путь.
Случай № 1 - область ограниченных значений
Если область значений целых чисел ограничена использованием только меньшего количества битов, чем собственные целые числа php, то вы можете упаковать их с помощью операторов сдвига.Например:
assert($n1 >= 0 && $n1 <= 255);
assert($n2 >= 0 && $n2 <= 1023);
assert($n3 >= 0 && $n3 <= 16383);
# pack
$packed = $n1 | ($n2<<8) | $n3<<18;
# unpack
$r1 = $packed & 255;
$r2 = ($packed >> 8) & 1023;
$r3 = ($packed >> 18) & 16383;
Случай № 2 - независимое хранилище
Если у вас есть возможность сохранять свои значения где-то еще, используя уникальный целочисленный (авто) идентификатор в качестве ключа - например, в база данных или файл с именем, содержащим ключ - вы можете передать идентификатор ключа вместо фактических значений и позже прочитать исходные значения, используя уникальный ключ, переданный как одно целое число.
Недостаток подобных решений заключается в том, что вам обычно требуется какая-то очистка, чтобы избавиться от старых потерянных значений.Кроме того, вам нужна логика для создания уникальных идентификаторов.