числа — получить младшие 64 бита большого целого числа в переполнении стека

Мне нужно смоделировать преобразование BigInteger в long в Java.
Это означает, что если BigInteger слишком велик, чтобы поместиться в длинный, возвращаются только младшие 64 бита.
Но я новичок в Php, поэтому я не знаю, как это сделать.

то есть
Из 393581355135911291782311 в Яве я получил 1623579244298503335.

BigInteger result_long = new BigInteger("393581355135911291782311");

System.out.println("->" + result_long.toString());

Я пробовал библиотеку Brick \ Math, но проблема в том, что есть только метод «toInteger ()», и он не дает мне младшие 64 бита.

1

Решение

Младшие биты — это только остаток от деления вашего числа на 2^(bits + 1),

Вы можете использовать остаток функционировать так:

$modulo = BigInteger::of(2)->power(64+1);
$lower_order_bits = $result_long->remainder($modulo);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]