Какой смысл умножать набор битов на 256 при добавлении шестнадцатеричных значений? - PullRequest
1 голос
/ 20 июня 2019

В настоящее время я пытаюсь декодировать шестнадцатеричное полезное содержимое, чтобы извлечь из него значения. Значение для преобразования составляет 0x7608. Однако я не получаю требуемый результат, который должен был быть 16-битным целым числом. Используемый язык программирования - PHP.

$hex="7608";
$left_part="76";
$right_part="08";

$left_part_to_decimal= hexdec($left_part);
$right_part_to_decimal=hexdec($right_part);

$result=(left_part_to_decimal<<8)|($right_part_to_decimal);

Фактический результат - 30216. Но мне был предоставлен фрагмент кода, согласно которому вычисление результата должно быть следующим:

$result=($left_part_to_decimal & 0xFF) + ($right_part_to_decimal & 0xFF) * 256;

Это приводит к ожидаемому результату 2166.

30216 не так, и я не могу понять, почему.

...