PHP: Объединить два 16-разрядных целых числа в 32-разрядное целое число


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

Два целых числа передаются с аппаратного обеспечения, которое не может передавать 32-разрядное значение напрямую, но передает два последовательных 16-разрядных значения отдельно.

Спасибо,

Author: Goro, 2010-06-18

2 answers

$a = ($a << 16) | $b;
 8
Author: Wrikken, 2010-06-17 22:12:47

Я понятия не имею о синтаксисе PHP, но готов поспорить, что он поддерживает побитовые операторы.

Вы можете сдвинуть первое 16-разрядное целое число влево и добавить его ко второму 16-разрядному целому числу:

first integer:
                0000000000000001
second integer:
                0000000000000010
shift first to the left by, say, 16:

first integer:
00000000000000010000000000000000
second integer:
                0000000000000010
add them:
00000000000000010000000000000010
 1
Author: Arne, 2010-06-17 22:14:29