n
对于 12 个字节,如果您有字符的图形位图n
(其中 32 <= n < 128) ,则可以在位为 1 的位置存储位掩码。将打包的位图存储在字节数组中(使用结构时要小心,因为您可能不得不担心元素之间的填充)。
您的代码将如下所示。get_bitmap
代码幼稚而缓慢,但会编译成一些小东西。
const unsigned char bitmap_available[12] = {0x1, 0x23, ...};
const unsigned char bitmaps[] = {
0x0, 0xff, 0x0, 0xff, 0x0, 0xff, // first character
0x1, 0x1, 0x1, 0x1, 0x1, 0x1, // second character
...
};
/* Do we have bitmap data available for character c? */
int char_available(char c) {
if (c < 32 || c > 127) return 0;
c -= 32;
return (bitmap_available[c >> 3] >> (c & 7)) & 1;
}
/* Returns pointer to bitmap for character c, or NULL if it's not present. */
const unsigned char *get_bitmap(char c) {
int i, n = 0;
if (!char_available(c)) return 0;
for (i = 32; i < c; i++) {
n += char_available(i);
}
return bitmaps + n * 6;
}
显然我不知道你想要哪些字符,也没有你的位图,所以我在两个数据数组中放了一些随机数据作为例子。