请问用51单片机怎么将unicode码转换成GB2312码?

2020-01-20 19:14发布

我现在要用到GB2312码,不过串口的数据是U码,现在涉及到将U码转化成GB码的问题。

在网上查了一些资料,有的是用查表的方法得到的,但是在51单片机中的可行度好像不大,因为那个映射表的数组非常庞大

请问各位大神是怎么做到的,将U码转化成GB码,有现成的芯片吗?或提供下程序,不胜感激~~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
def_2
1楼-- · 2020-01-20 21:37
望大家帮忙。。。
cheungman
2楼-- · 2020-01-21 00:20
UNICODE转GBK 映射表有128K, 可以的话, 找个SPI FLASH存~
takashiki
3楼-- · 2020-01-21 02:08
映射方式不是顺序映射的,只能查表。
要速度快就以Unicode作为基础做一个大表,占用Flash 128K。
要占用Flash小就以GB2312为基础做一个表,占用大概Flash 15K,再挨个搜索。
想再小一点就把GB2312后面的二级汉字单独提取出来做个小表,存储差分后的Unicode编码,按差分后每个占用1字节计,占用Flash大约11K。
更小一点,直接把二级汉字干掉,只占大约7K的Flash空间,超出部分全部用XXX代替,哈哈。
Appcat
4楼-- · 2020-01-21 06:30
 精彩回答 2  元偷偷看……
i55x
5楼-- · 2020-01-21 07:15
如果只是转其中一个很小的子集,比如英文用51还能做,如果是全转51就太吃力了,换stm32吧。
why1220
6楼-- · 2020-01-21 09:02
iconv是开源的可参考http://www.gnu.org/software/libiconv/,里面有一大堆如gb2312.h,gbk.h一类的头文件,正如你所说里面有很多很大的数组,用于查表,可以把这些源文件拿编译出来,放到SD卡或flash存储芯片中,通过SPI接口进行查表操作进行转换!

一周热门 更多>