It seems like you use a list-of-2-lists-of-ints representation of each cell state.
Another common standard (arguably more common) is the left-shift style, which looks like this:
# Braille dot numbers:
# 1 4
# 2 5
# 3 6
# 7 8 # <- These two are optional.
Then the cell state is represented by a single uint8_t value, which is the bitwise OR of left-shifted ones representing each dot in the cell.
Dot Bit Position
1 0 (1 << 0)
2 1 (1 << 1)
3 2 (1 << 2)
4 3 (1 << 3)
5 4 (1 << 4)
6 5 (1 << 5)
7 6 (1 << 6)
8 7 (1 << 7)