Я не могу понять, как написать эту строку кода на PHP. Я никогда раньше не сталкивался с чем-то подобным в PHP и был бы признателен за любую помощь.
$OCTET_data->B[0] = (unsigned char) (ror8 ((unsigned char) (ror8 ($OCTET_data->B[0], 1) - 1), 1) - 1) ^ $OCTET_data->B[4];
Я не могу на всю жизнь понять, что ты пытаешься сделать.
Но я думаю, что вы ищете функцию «пакет».
http://php.net/manual/en/function.pack.php
$unsignedchar = pack("C",$char); // convert a char character to an unsigned char byte
(unsigned char)
приведение в исходном коде C отбрасывает все биты, не помещающиеся в unsigned char
из операнда. Код, очевидно, предполагает, что unsigned char
имеет 8 битов, таким образом, приведение эквивалентно побитовому И с 28-1, и ты можешь написать
$OCTET_data->B[0] = (ror8((ror8($OCTET_data->B[0], 1)-1)&255, 1)-1)&255^$OCTET_data->B[4];
или, может быть, немного яснее
$OCTET_data->B[0] = ror8(ror8($OCTET_data->B[0], 1
)-1 & 255, 1
)-1 & 255 ^ $OCTET_data->B[4];