まず私はあなたの入力ファイルがバイナリデータではなく文字データ(すなわち進文字)が含まれてと仮定しています。
ファイル形式がバイト境界(3x12ビット、次に1x10ビット、2x1ビット)で整列されていないことが原因で、少しのジヤイリングが必要です。
我々は、単一の測定のためのフォーマットを調べると、我々はこれを持っている:
# 0xF4 0x1F 0x9E 0X08 0x20 0x00
# --------- --------- --------- --------- --------- ------------
# 0xF 0x4 0x1 0xF 0x9 0xE 0x0 0x8 0x2 0x0 0x0 0x0
# 1111 0100 0001 1111 1001 1110 0000 1000 0010 0000 0000 00 0 0
私たちが望むアライメントがある:
# x-axis y-axis z-axis light b r
# -------------- -------------- -------------- ------------ - -
# 1111 0100 0001 1111 1001 1110 0000 1000 0010 0000 0000 00 0 0
そこであなたは、我々はいくつかのビットを行う必要があるしたいの解釈を取得します操作。下記(これは簡素化を助けるために可能性の高いAPIがあります)この長い手を行う方法を示しています
MEASURE_SIZE_BYTES = 6
MEASURES_PER_PAGE = 300
PAGE_SIZE_BYTES = MEASURE_SIZE_BYTES * MEASURES_PER_PAGE
def readPage(data):
measures = []
for measure in xrange(0, MEASURES_PER_PAGE):
i = measure * MEASURE_SIZE_BYTES
xAxis = (data[i] << 4) + (data[i + 1] >> 4)
yAxis = ((data[i + 1] & 0xF) << 8) + (data[i + 2])
zAxis = (data[i + 3] << 4) + (data[i + 4] >> 4)
light = ((data[i + 4] & 0xF) << 8) + (data[i + 5] & 0xFC)
button = (data[i + 5] & 0x2) >> 1
reserved = (data[i + 5] & 0x1) >> 0
measures.append({'xAxis': hex(xAxis), 'yAxis': hex(yAxis),
'zAxis': hex(zAxis), 'light': hex(light),
'button': hex(button), 'reserved': hex(reserved)})
return measures
with open("data.bin", 'rb') as f:
pages = []
pageBytes = bytearray(f.read(PAGE_SIZE_BYTES))
while len(pageBytes) == PAGE_SIZE_BYTES:
pages.append(readPage(pageBytes))
pageBytes = bytearray(f.read(PAGE_SIZE_BYTES))
print(pages)
は(単一ページ/メジャーの)生成されます
[[{'reserved': '0x0', 'yAxis': '0xf9e', 'light': '0x0', 'button': '0x0', 'zAxis': '0x82', 'xAxis': '0xf41'}]]
結果を表示するにはbase10で:
[[{'button': 0, 'light': 0, 'reserved': 0, 'xAxis': 3905, 'yAxis': 3998, 'zAxis': 130}]]
私はしかし、私はあなたには、いくつかの[ヒント]を得ることができると考え、これらの事を知っていると主張していませんよ(https://stackoverflow.com/questions/47561251/how-to-convert-a- raw-hexadecimal-image-to-a-html-img/47561725#comment82081925_47561725)他から同様の質問。私はあなたがnumpyがインストールされていると仮定します。 – ahed87
私はあなたのファイルが16進文字ではなくバイナリデータを含んでいないと賭けています。もしそうなら、[this](https://stackoverflow.com/questions/1035340/reading-binary-file-and-looping-over-each-byte)のような何かが助けになるかもしれない – FujiApple