Алгоритм — Как объединить 3 или более идентификаторов в 1 64-битный идентификатор в переполнении стека

Используя битовое смещение, это легко сделать для 2 идентификаторов следующим образом:

$id1 = 125;
$id2 = 23;
$mergedid = ($id1 << 8) + $id2

затем получить каждый идентификатор:

$id1 = $mergedid >> 8;
$id2 = $mergedid & 0xFF;

Anyonw знает, как сделать для 3 или более идентификаторов?

0

Решение

сливаться

$mergedid = ($id1 << 24) + ($id2 << 16) + ($id3 << 8) + ($id4 << 0)

экстракт

$id1 = ($mergedid >> 24) & 0xFF;
$id2 = ($mergedid >> 16) & 0xFF;
$id3 = ($mergedid >>  8) & 0xFF;
$id4 = ($mergedid >>  0) & 0xFF;

Я знаю, что сдвиг влево и сдвиг вправо на 0 ничего не делает. Я только что включил его, чтобы показать вам шаблон

1

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

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