c++ - 如何从嵌套的 PROGMEM 数组中读取 uint32_t 值?
问题描述
我有一个 16x16 的 uint32_t 值矩阵数组: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])
并让编译器处理偏移量计算一样简单。
推荐阅读
- mysql - InnoDB 无法为缓冲池分配内存
- arrays - 返回具有数组字段的文档,该数组字段包含 Elasticsearch 6.x 中用户数组中的所有元素
- python - 如何将builtins.input 用于多个输入
- r - 如何使用 R 中的 oauth2 令牌从 Web 服务器检索数据?
- sql-server - 保存在数据库服务器中的 SSIS 包无法从应用服务器执行
- angular - 如何在使用 Cloudinary 自己的小部件上传器上传之前进行裁剪?
- oracle-sqldeveloper - 如何将此查询放入 SQL Developer 中的存储过程中?
- python - 如何从文件中读取列表列表并制作单独的列表?
- javascript - 如何使用 angularjs 中的 sortBy 过滤器对波兰字符进行排序?
- html - 如何使用 CSS 加载基于浏览器支持的图像格式?