У меня была эта проблема сегодня со значением контрольной суммы в одном из моих модулей js. Тест показал, что два значения не были равны, но печать значений показала, что они были равными.
Запустил его в отладчике и (повторно) обнаружил, что целочисленные типы в Javascript являются 64-битными плавающими величинами. Одно из чисел отображалось как отрицательное в отладчике - точно (0xFFFFFFFF + 1) меньше, чем другое число. Каким-то образом при печати они отображаются точно так же.
Я использовал собственную подпрограмму для форматирования их в шестнадцатеричном формате, что, вероятно, было связано с этим. Такое сочетание обстоятельств кажется маловероятным в вашем случае.
Я обнаружил проблему со знаком в своем коде, вычислив дельту между числами и отобразив ее. Он обозначался как MAX_UINT32 + 1, что напомнило мне, что эти числа действительно являются 64-битными числами с плавающей запятой.