Проблема с неподписанным символом C на PHP

Я не могу понять, как написать эту строку кода на PHP. Я никогда раньше не сталкивался с чем-то подобным в PHP и был бы признателен за любую помощь.

$OCTET_data->B[0] = (unsigned char) (ror8 ((unsigned char) (ror8 ($OCTET_data->B[0], 1) - 1), 1) - 1) ^ $OCTET_data->B[4];

0

Решение

Я не могу на всю жизнь понять, что ты пытаешься сделать.

Но я думаю, что вы ищете функцию «пакет».
http://php.net/manual/en/function.pack.php

   $unsignedchar =  pack("C",$char);  // convert a char character to an unsigned char byte
0

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

(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];
0