Мне пришлось работать в проекте, где у нас есть идентификатор в HEX.Почему два разных целых числа могут быть преобразованы в один и тот же номер HEX?
Пример: B900001752F10001
, получен в парсере, разработанном в JAVA в переменной SIGNED LONG. Мы сохраняем эту переменную в переменной SIGNED BIGINT в MySQL DB.
Каждый раз, когда нам нужна цепочка HEX, мы используем функцию HEX (код), и получаем то, что ожидается.
Но когда мы должны предоставление мастер-таблицы, мы должны вводить допустимые коды, чтобы добиться того, что мы использовали что-то вроде:
Update employee set code=0xB900001752F10001 where main_employee_id=1002;
он работал в прошлом производстве код, который будет храниться в БД в
13330654997192441857
, но теперь мы используем ту же самую точную инструкцию, и мы получаем код, хранящийся в БД, как
-5116089076517109759
Таким образом, сравнивая эти два числа с помощью функции HEX, они обеспечивают тот же НОМЕР НОМЕРА.
select HEX(-5116089076517109759), HEX(13330654997192441857)
0xB900001752F10001, 0xB900001752F10001
Может ли кто-нибудь объяснить идеи, почему это происходит? Как мы должны справиться с этим с точки зрения обеспечения, мы должны обеспечить сохранение как 13330654997192441857
, поэтому, когда происходит событие аутентификации, коды кодов совпадают.
Я бежал без какой-либо другой идеи, я ценю любую помощь.