Прежде всего надо понять, что ты делаешь с этими числами. Числа семантически отличаются от строк тем, что на их множестве определена арифметика и их можно сравнивать на больше-меньше. Довольно часто числа используются для всяких уникальных идентификаторов (будь то автоинкремент в БД или номер счёта в банке). Но, если задуматься, то нет никакого смысла прибавлять к одному идентификатору другой или сравнивать, больше ли номер счёта X1, чем X2. Опустим здесь cursor-based pagination, которой важно сравнивать ID.
Такие вещи логично и правильней хранить строкой, а алгебру на таких множествах пресекать. Если же это не так, то
8-байтовый bigint позволяет хранить числа до 9223372036854775807, что на три порядка больше, чем нужно тебе
UPD. Увидел, что ты собрался преобразовывать 16-значное число в 10-значное, что невозможно сделать без потерь, поэтому мне кажется, что где-то здесь затаился дилетант, путающий алфавит и разряды, а я тут про семантику и поля распинаюсь.