バイナリ文字の処理なのですがうまく変換できずに混乱してしまったので,質問致します.
python2.7でバイナリ文字の処理をしています.
2の補数,4バイト固定小数点です.
例えば,
bitからhexへ変換しています.
python2.7
1int(x, 16)/2**24
で処理して,以下の3つの値があります.
本来は負で出るはずなのですが,うまく処理できていません.
正の値は正しい値で得られます.
fff622cc fffc954b 01006cb4
255.961468458 255.98665303 255.898968458
修正版
python2.7
1msg = ser.serial.readline().encode('hex') 2 3if len(msg) == 2*20: 4 dtype = msg[0:2] 5 d = int(msg[2:4],16) 6 7hex_accX = msg[4:12] 8hex_accY = msg[12:20] 9hex_accZ = msg[20:28] 10hex_temp = msg[28:34] 11 12# Hex to Decimal 13accX = int(hex_accX, 16)/float(2**24) 14accY = int(hex_accY, 16)/float(2**24) 15accZ = int(hex_accZ, 16)/float(2**24) 16print hex_accX, hex_accY, hex_accZ, hex_temp 17print accX, accY, accZ, temp
で得られたデータがとなり,2個めのYの値が-ではなく正の値で出てきているため,負の値へ正しく変換するためにはどんな処理が必要でしょうか.
00007a0f fffbe7e3 0100b297
0.0018624663353 255.984007061 1.00272506475
bit[31] 符号部
bit[30:24] 整数部
bit[23:0] 小数部
となっています.
どなたか解る方ご教示いただければと思います.
よろしくお願い致します.
回答2件
あなたの回答
tips
プレビュー