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

Mar*_*lin 1 php byte bit-manipulation nibble

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

11110000=要读入的高4位节流,$throttle应该是0到15之间的值. 00001111=低4位制动,要读入$brake,并且应该是0到15之间的值.

别忘了,司机可以同时使用油门和刹车,这样你就可以得到一个像这样的值11000111.我自己想出了一个高4位的解决方案,就像使用>>(位右移)运算符4次将低4位推出一样简单.$Throttle = $ThrBrk >> 4,但由于我不能在低位四位的一次移动中做到这一点,所以我的源代码看起来有点糟糕.

Kai*_*aja 6

使用AND两个运算符并将顶部半字节向右移动四位.

$brake = $value & 0x0F;
$throttle = ($value & 0xF0) >> 4;
Run Code Online (Sandbox Code Playgroud)