【发布时间】:2013-05-12 15:00:45
【问题描述】:
我需要一个用于 C 中的嵌入式系统的紧凑数据结构。给定一个表示 ascii 代码的字节,函数将返回该字体字符的 6 字节位图。只有少数字符的位图会在 ROM 中 - 例如,0-9、'.'、':' 和其他一些字符。
一种低效的解决方案是使用一个长度等于最高 Ascii 值的数组,该数组指向存储字符位图的第二个数组中的索引。例如,第一个数组将有 128 个一个字节的元素,如果我定义了 20 个字符的位图,第二个数组将有 20 个 6 个字节的元素。第一个数组中的元素值将映射到第二个数组中的索引,因此 ascii 值选择第一个数组中的元素,并且该元素的值用作第二个数组中的索引值以获取 6 字节位图。但这浪费了大约 100 个字节(在第一个数组中)。
有没有更好的方法? 谢谢
编辑:我想我将不得不使用 switch 语句或类似的语句 - 例如@Brandon Yates 的建议,我可能会挑剔
【问题讨论】:
-
如果只使用 20 个元素,为什么第一个数组需要 120 个元素?
-
因为我需要查找给定 Ascii 值的位图,该值可能高达 128
-
那么没有定义位图的字符会发生什么?
-
一切都会崩溃并可怕地燃烧:)
-
如果字符串是硬编码的,将实际使用的ASCII码重新映射到一个连续的范围内。
标签: c arrays data-structures ascii lookup-tables