Мне нужно смоделировать преобразование BigInteger в long в Java.
Это означает, что если BigInteger слишком велик, чтобы поместиться в длинный, возвращаются только младшие 64 бита.
Но я новичок в Php, поэтому я не знаю, как это сделать.
то есть
Из 393581355135911291782311 в Яве я получил 1623579244298503335.
BigInteger result_long = new BigInteger("393581355135911291782311");
System.out.println("->" + result_long.toString());
Я пробовал библиотеку Brick \ Math, но проблема в том, что есть только метод «toInteger ()», и он не дает мне младшие 64 бита.
Младшие биты — это только остаток от деления вашего числа на 2^(bits + 1)
,
Вы можете использовать остаток функционировать так:
$modulo = BigInteger::of(2)->power(64+1);
$lower_order_bits = $result_long->remainder($modulo);
Других решений пока нет …