使用传递的 ascii 值查找 6 字节结构的 C 数据结构

标签 c arrays data-structures ascii lookup-tables

我需要一个用于 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/

相关文章:

java - 如何在两个列表之间找到匹配的对象?

c - 由于 C 中的 40 MB 数组而导致段错误 11

java - 需要帮助存储二维数组中的特定值

c - 如何在套接字服务器应用程序中重用端口?

php - 在 php 中用循环定义二维数组

在 C 中将数据从一个矩阵复制到另一个矩阵

python - 倒排索引是如何存储的?

c++ - 通过使用任何有效算法最小化 Blackbox 调用数量来减少 2D 网格

c - 输入无效条目时刷新 scanf 缓冲区的好方法

c - 奇怪的输出解释