1

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

11110000= 高 4 位油门,读入$throttle,取值范围为 0 到 15。 00001111= 低 4 位刹车,读入$brake,取值范围为 0 到 15。

别忘了,司机可以同时踩油门和刹车,所以你可能会得到一个类似的值11000111。我自己想出了一个高 4 位的解决方案,它就像用>>(位移右)运算符将低 4 位推开 4 次一样简单。$Throttle = $ThrBrk >> 4,但是由于我不能一次性完成低四位的操作,因此在我的源代码中看起来有点糟糕。

4

2 回答 2

6

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

$brake = $value & 0x0F;
$throttle = ($value & 0xF0) >> 4;
于 2011-05-06T10:21:47.940 回答
2

查看& 运算符,它是按位与。要获得第一个(最低有效位),请执行以下操作:

$lsb = $bits & 1;

因此,要获得整个“蚕食”:

$break = $bits & 15;
于 2011-05-06T10:23:15.303 回答