gpt4 book ai didi

c - 嵌入式 C-UTF8 到 MARC8

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:46 25 4
gpt4 key购买 nike

我正在使用 STM32 作为我的微处理器,我正在尝试访问一个包含我的 LCD 阿拉伯字体的数组我的问题是字符按 MARC8 排序,但使用 UTF8 进行解析

例子

   unsigned char * C = "ب";

十六进制值是 D8A8 而它应该只是 C8。

有什么解决办法吗?

最佳答案

有两种可能的方法。

运行前转换

使用(编写)外部程序将文本转换为目标编码。它应该输出一个 #define 行列表,或者一个 enum 定义和一个 C 语法字节数组,可以像 #include 中的标题一样使用。例如,

#define SOME_TEXT "\xE2\x96\x94\x85\x40\xA3\x85\xA7\xA3" /* this is actually EBCDIC */

然后在程序中使用这些

const char *sometext = SOME_TEXT;

这在速度和内存有限的嵌入式平台上是有利的,因为转换表和例程不存储在目标上。

缺点是其他系统以电子方式(通过网络或存储卡)提供的文本在使用前仍必须以某种方式进行转换。

运行时转换

你当然可以使用一个简单的转换函数,它接受一个 unicode 字符串,然后使用像这样的映射表将它一个字符一个字符地转换成一些其他编码

struct ucs_to_marc8 {
unsigned char code1, code2;
unsigned char marc8;
};
const struct ucs_to_marc8 ucs_to_marc8_table[] = {
{ 0xD8, 0xA7, 0xC7 }, // aleph
{ 0xD8, 0xA8, 0xC8 }, // beh
/* etc */
{ 0, 0, 0 } };

关于c - 嵌入式 C-UTF8 到 MARC8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53361207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com