1
私はバイナリデータのブロックを同等のFloatデータに変換するためにPythonを使用しています。私はPythonのバージョン2.7にも作品を書かれている、しかし、同じバイナリブロックデータが#220 &û<êŒûvçæýTûz£¯÷」BInaryブロックをFloatに変換する
以下のようになります
import sys
import struct
start = 1500
stop = 1600
step = 10
with open("/home/pi/Desktop/Output.bin", "rb") as f:
byte = f.read(2)
readNext = int(byte[1])
byte = f.read(int(readNext))
byte = f.read(4)
while (len(byte) > 3):
measurement = struct.unpack('<f4', byte)
start = start + 10
print(start, measurement)
byte = f.read(4)
のPython 3.4に失敗したコード最初のバイトは常に#であり、その後のバイトの数はNumberであり、この場合は2であるため、20が続きます。その後、実際のデータが来ます。各リーディングは4バイト長で、リトルエンディアン形式を使用してフロートに変換されます。 Pythonの2.7で実行
出力:
(1510, (-5.711601726275634e+25,))
(1520, (-246.98333740234375,))
(1530, (8723971440640.0,))
(1540, (-2.9736910156508145e-10,))
(1550, (-1039662528.0,))
コードは、私は、Python 3.4で実行しています:
import sys
import struct
start = 1500
stop = 1600
step = 10
with open("/home/pi/Desktop/Output.bin", "rb") as f:
byte = f.read(2)
byte = byte.decode('UTF-8') #I had to convert to read the Byte
readNext = byte[1] # Reading the First Digit
byte = f.read(int(readNext)) # Skip the Integer values
byte = f.read(4) # The Actual Data
while (len(byte) > 3):
measurement = struct.unpack('<f4', byte)
start = start + 10
print(start, measurement)
byte = f.read(4)
エラー:私は得るためにそれを修正するにはどうすればよい
Traceback (most recent call last):
File "/home/pi/Desktop/MultiProbe/bin2float.py", line 17, in <module>
measurement = struct.unpack('<f4', byte)
struct.error: repeat count given without format specifier
Python2.7で実行したときの出力と似た出力
こんにちはジーン、それを指摘してくれてありがとう....あなたのソリューションは、それを動作させました。 –