如何从嵌套的 PROGMEM 数组中读取 uint32_t 值?
How do I read uint32_t values out of a nested PROGMEM array?
我有一个包含 uint32_t 值的 16x16 矩阵数组:const uint32_t sprites[][16][16] PROGMEM = { ... };
我试图用 pgm_read_dword(sprites + (submode * 256 + row * 16 + column) * sizeof(uint32_t))
读出这些值,但我转过头来对如何读出这些值感到困惑地址数学有效。在此,submode
映射到矩阵索引。 submode
、row
和 column
都声明为 uint8_t
,以防万一。
如何正确计算 pgm_read_dword
的地址?
是pgm_read_dword
连我想怎么读出uint32_t
值?我立即将输出传递给需要该类型的方法。
根据评论中的 datafiddler,它就像调用 pgm_read_dword(&sprites[submode][row][column])
并让编译器处理偏移量计算一样简单。
我有一个包含 uint32_t 值的 16x16 矩阵数组:const uint32_t sprites[][16][16] PROGMEM = { ... };
我试图用 pgm_read_dword(sprites + (submode * 256 + row * 16 + column) * sizeof(uint32_t))
读出这些值,但我转过头来对如何读出这些值感到困惑地址数学有效。在此,submode
映射到矩阵索引。 submode
、row
和 column
都声明为 uint8_t
,以防万一。
如何正确计算 pgm_read_dword
的地址?
是pgm_read_dword
连我想怎么读出uint32_t
值?我立即将输出传递给需要该类型的方法。
根据评论中的 datafiddler,它就像调用 pgm_read_dword(&sprites[submode][row][column])
并让编译器处理偏移量计算一样简单。