我不能为我的生活弄清楚如何在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 :(得分:0)
我不能为我的生活弄清楚你想要做什么。
但我认为你正在寻找'包装'功能。
http://php.net/manual/en/function.pack.php
FutureCallback
答案 1 :(得分:0)
原始C代码中的(unsigned char)
强制转换会丢弃所有不符合操作数unsigned char
的位。代码显然假设unsigned char
有8位,因此强制转换相当于按位AND且2 8 -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];