2017-04-07 6 views
-1

私はRaspi 3とArduinoにBluetoothシリアル経由でバイトを送ります。CとPythonのバイトからLSBを抽出する方法は?

0b00000011(モード)、0b01000001(モード)、0b10010000(方向)

バイトは、方向コマンドまたはモードを切り替える指示であるので、私はArduinoのCおよびPythonでそれを抽出する必要がある場合、LSBを示しています。

誰でもこれを行う方法を知っていますか? ありがとうございます!

+0

ここで見る:http://stackoverflow.com/questions/21341338/extract-lsb-bit-from-a-byte-in-python – arman

+0

両方の言語で 'value&1' 。 –

+4

数値のあるビットの値を抽出する通常の方法は、ビット単位の "and"演算で他のビットをマスクすることです。 PythonとCはその演算子を同じ方法で綴ります: '&'。 –

答えて

1

は、ビット操作を使用:

Cコード

char b = 0x01; 

if(b & 0x01) { 
    // LSB is set 
} 
else { 
    // LSB is not set 
} 

Pythonコード

b = 0x01 
if (b&0x01)==0x01 : 
    # LSB is set 
else: 
    # LSB is not set 

LSB = L東S ignificantをBそれは(あなたの場合)

+0

このエラーは次のように表示されます:トレースバック(最新のコール最後): ファイル "/home/pi/Desktop/test.py"、行11、 if(b&0x01) : TypeError:&: 'bytes'と 'int'のためのサポートされていないオペランドタイプ –

+0

@ the_dani、PythonでCコードを実行する – Dorin

+0

よかったですよ、あなたはPythonでそれを行う方法を知っていますか? –