Объекты в зеркале ближе, чем кажутся

Я думаю, что есть много ограничений для целых чисел js, но некоторые из них могут быть значительными, когда вы работаете с битами.

Представьте ситуацию, когда мы получаем 32-битный хэш и хотим его обработать.

Одной из распространенных бинарных операций в js является сдвиг.

Итак, как мы видим, бинарные операции подходят для 32-битных, но не забывайте, что это целые числа со знаком, поэтому 32-й бит используется для знака. Таким образом, у вас даже меньше битов, чем вы можете ожидать.

Я рекомендую использовать типизированный массив uint (Uint32Array) или массив слов (2 байта). Таким образом, вы не достигнете этого предела, но вам все равно нужно внимательно следить, когда вы перемещаете биты из заполнителя и переносите их из одного элемента в другой. В качестве альтернативы вы можете обрабатывать данные на сервере, например, в Python, потому что у него нет таких ограничений.