echo intval(hexdec('c0199506cb5dd57f')); // -4604485287595354112
Когда мы делали то же самое на клиентах, было другое:
client on objective-c returns -4604485287595354753
client wrote on java returns -4604485287595354753
Я думаю, это потому, что целое число становится переполненным (PHP не поддерживает целые числа со знаком) и в результате потери точности.
Как решить эту проблему?
«Максимальное значение зависит от системы. 32-битные системы имеют максимальный целочисленный диапазон со знаком от -2147483648 до 2147483647. Так, например, в такой системе intval (‘1000000000000’) вернет 2147483647. Максимальное целочисленное значение со знаком для 64-битного системы 9223372036854775807. «
От: http://php.net/manual/en/function.intval.php
Некоторые обходные пути будут хранить значение в строке или разбить его на несколько частей, которые могут быть собраны вместе. В качестве альтернативы, есть внешние плагины для обработки очень больших чисел.
Какое решение лучше, зависит от того, для чего используется номер.
Других решений пока нет …