C到PHP unsigned char问题

时间:2015-12-30 06:13:26

标签: php c char unsigned

我不能为我的生活弄清楚如何在PHP中编写这一行代码。我以前从未在PHP中遇到过这样的事情,并希望得到任何帮助。

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

2 个答案:

答案 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];