我需要一个用于 C 语言嵌入式系统的紧凑数据结构。给定一个表示 ascii 代码的字节,函数将返回该字体字符的 6 字节位图。只有少数字符的位图会在 ROM 中 - 例如,0-9、'.'、':' 和其他一些。
一个低效的解决方案是使用一个长度等于最高 Ascii 值的数组,该数组指向存储字符位图的第二个数组中的索引。例如,第一个数组将有一个字节的 128 个元素,如果我定义了 20 个字符的位图,第二个数组将有 6 个字节的 20 个元素。第一个数组中的元素值将映射到第二个数组中的索引,因此 ascii 值选择第一个数组中的元素,并且该元素的值用作第二个数组中的索引值以获取 6 字节位图。但这浪费了大约 100 个字节(在第一个数组中)。
有没有更好的方法? 谢谢
编辑:我想我将不得不使用 switch 语句或类似的语句——比如@Brandon Yates 的建议,我可能是吹毛求疵
最佳答案
像这样的结构数组怎么样
typedef struct
{
uint8_t asciiCode;
uint8_t bitmap;
} charMapping_t;
然后像这样初始化
const static charMapping_t myMap[20] = {your 20 chars....}
关于使用传递的 ascii 值查找 6 字节结构的 C 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16508675/