micropython
M5stack
bytearray

microPythonでbytearrayのbitに簡単にアクセスしたい。

そもそも使えるメモリ少ないんだしさ、もっとメモリに配慮したファンクションが用意されていてもよくね?

と、いきなり愚痴ですが。
まあ、行き着くところはbytearayなんです。

今回はとりあえず、M5stackの画面用バッファをモノクロで作るために320x240のデータを扱えるようにしてみましたが。応用は効くかも。

コード

barray.py
class BARRAY:

    buf = bytearray(9600)   

    def __init__(self):
        pass

    def get(self,x,y):
        idx = y * 320 + x
        idxb = idx % 8
        idx = int(idx/8)

        if ((self.buf[idx] & (1<<idxb)) != 0 ):
            return True
        else:
            return False

    def put(self,x,y,val):
        idx = y * 320 + x
        idxb = idx % 8
        idx = int(idx/8)
        data = self.buf[idx]
        if(val):
            data |= (1 << idxb)
        else:
            data &= 0xff ^ (1 << idxb)
        self.buf[idx]=data

使い方。

>>> import barray
>>> ba = barray.BARRAY()
>>> ba.put(0,0,True)
>>> ba.get(0,0)
True
>>> ba.get(1,0)
False

ひとまずこんなところで。