迮嘌礽OS开发好还是漓江一曲千峰秀的好

操作系统的字符集是个什么类型的文件? - 知乎107被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答char Asc2Char(int v)
if (v == 65) c = 'A';
if (v == 66) c = 'B';
/* ... 以此类推,有很多 if */
if (v == 90) c = 'Z';
如果字符集里有十几万个文字,就是十几万个if,这么做当然慢了。实际情况不是这样的,实际情况是:char map[27] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
char Asc2Char(int v)
return map[v - 65];
一句就搞定了。至于map是在内存里还是文件里无所谓。所以不存在“扫描字符集”的“扫描”动作。字符集转换是一步搞定的。具体到代码的行为里(限Windows):1. 程序输出的编码先转换成本地字符集(这一步可能没有,也可能是编译器链接的库里完成的)2. 本地字符集转化成Unicode编码(这一步也可能没有,如果程序使用Unicode编码)3. Windows使用Unicode查表,就是你说的“扫描”这一步,只不过一条转换就搞定,定位到具体的字体的文件内偏移位置(字体文件在c:\windows\fonts)4. 解析字体文件,显示字符(由渲染代码和显卡驱动完成)。所以没有“扫描”,只有“转换”,基本上是一步完成的。没查Windows代码,不是特别清楚每步的具体实现,大概就是这样的。11添加评论分享收藏感谢收起121 条评论分享收藏感谢收起

我要回帖

更多关于 千峰培训 的文章

 

随机推荐