读取一个字节中的顶部半字节和底部半字节

时间:2011-05-06 10:12:00

标签: php byte bit-manipulation nibble

处理存储在一个字节数据中的两个不同值的正确方法是什么。我有一个包含两个半字节的字节,每个半字节包含自己的数据。我想把顶部的半字节和底部的半字节读成自己的变量。

11110000 =高4位节流,读入$throttle,应为0到15之间的值。 00001111 =低4位制动,读入$brake,应为0到15之间的值。

不要忘记,司机可以同时应用油门和刹车,因此您可能会得到11000111之类的值。我自己想出了一个高4位的解决方案,就像使用>>(右移位)运算符4次将低4位推出一样简单。 $Throttle = $ThrBrk >> 4,但由于我不能在较低的四位中进行一次移动,因此在我的源代码中看起来有点不好。

2 个答案:

答案 0 :(得分:6)

对两者使用AND运算符,并将顶部半字节向右移动四位。

$brake = $value & 0x0F;
$throttle = ($value & 0xF0) >> 4;

答案 1 :(得分:1)

查看& operator,这是一个按位AND。要获得第一个(最低有效位),请执行以下操作:

$lsb = $bits & 1;

所以,要获得整个“蚕食”:

$break = $bits & 15;