2011-05-06 86 views
1

處理存儲在一個字節數據中的兩個不同值的正確方法是什麼?我有一個包含兩個半字節的字節,每個半字節都包含自己的數據。我想將最高半字節和最低半字節讀入他們自己的變量中。在一個字節中讀取最高半字節和最低半字節

11110000 =高4位油門,被讀入$throttle,應該是從0值到15。 00001111 =低4位制動器,被讀入$brake,而且應該是從0到15的值

別忘了,司機可以同時應用油門和剎車,所以你可能會得到一個值,如11000111。我自己想出了一個高4位的解決方案,就像使用>>(位右移)運算符4次將低4位排除在外一樣簡單。 $Throttle = $ThrBrk >> 4,但是由於我無法一次完成較低的四位,所以在我的源代碼中看起來有點不好。

回答

6

使用AND運算符爲兩者,並將最高四位移到右邊。

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

查看& operator,這是一個按位與。爲了得到第一個(最顯著位),這樣做:

$lsb = $bits & 1; 

因此,要獲得整個 「蠶食」:

$break = $bits & 15;