如何求得汉字的机内码。

如何求得汉字的机内码。

一次中文信息课的实验,要实现根据输入的汉字,来用16*16点阵显示出来,并进行相应的扩展。以前没写过类似的程序,于是先找了很多相关资料,了解了汉字的点阵显示。本来给的提示代码是在C语言的,用到了graphics.h,在VC里面没有这个头文件,而我现在又很偏向在VC里面写,于是出现了一系列的问题。

开发平台是MFC。大体制定了几个步骤,先把输入的汉字原封不动的点阵显示。

1,根据输入的汉字,得到机内码。

2,通过机内码计算出区位码,也就是区号,和位号。

3,通过区位码计算出在汉字库HZK16中的偏移量。

4,根据偏移量,确定像素点,构建位图。CBbitmap

5,将位图显示在 PICTURE窗口中。

我没有用打点的方式,而是用了位图。我感觉后者比较好一点。

今天在实现第一个步骤时,出了些小问题。

用GetDlgItem(IDC_EDIT1)->GetWindowText(str);来取得窗口指针

然后在格式化的时候出现了问题。

CString ss;

ss.Format(_T("%X"),'我');

显示出的是“我”的机内码CED2

但是如果用ss.Format(_T("%X"),str);确不可以。

请教了老师,才发现Format里格式化的str只是一个字符,而取过来直接显示的是字符串

后来改成ss.Format(_T(''%X'),(byte)*str)只显示出CE,因为一个汉字是用2个字节存储的,只能把这个字符串的前2个字节取出来连接到一起再显示,因为对字符串的操作不是很熟悉,所以引起了那么多不必要的问题。

写在这里只为提醒自己以后注意~

最近一直再读C++primer,真是一本好书~