📄 gethzdz.cpp
字号:
/*
做成日期: 2003年9月15日
程序作者: zzwj5120
E-mail: zzwj5120@sina.com
程序功能: 从HZK16中提取汉字对应的16*16点阵数据
入口参数: unsigned int n,即两字节的汉字内码
其它说明: 汉字2字节由 unsigned int n 传递
取得的点阵库放在 hzdz[32]
返回的m是相应汉字在HZK16中的位置
计算公式: 汉字点阵在HZK16中的位置
m = 32*([汉字第一字节]*94+[汉字第二字节])
参考资料: 单片机系统中的汉字显示 http://www.21ic.com
c语言教材
*/
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
unsigned char hzdz[32];
unsigned long gethzdz(unsigned int n)
{
FILE *fp;
static unsigned long m=0xb020;
unsigned long j,k;
char i;
union word
{
unsigned int ab;
struct bytes
{
unsigned char a;
unsigned char b;
}st;
}un;
//***********************************
//start
if((fp=fopen("HZK16","rb"))==NULL)
{
cout<<"read HZK16 error !";
getch();
return m ;
}
//************************************************
un.ab=n;
un.ab-=0xa1a1;
j=un.st.b;
k=un.st.a;
//************************************************
//view
window(1,1,16,16);
/*
printf("\nthe new value un.ab-0xA1A1 = %04.4x ",un.ab);
//getch();
printf("\nunsigned char un.st.b = %02.2x ",un.st.b);
printf(" to unsigned long j = %02.2lx ",j);
printf("\nunsigned char un.st.a = %02.2x ",un.st.a);
printf(" to unsigned long k = %02.2lx \n",k);
*/
//getch();
//************************************************
m=32*(j*94+k);
//**************************************************
//view
/*
printf("we get the position = 32*(0x%x*94+0x%x)\n",j,k);
printf(" = %lx\n",m);
*/
//getch();
//**************************************************
if(fseek(fp,m,0))
{
fclose (fp);
return 0xb020;//读HZK16文件到结尾
}
for(i=0;i<32;i++)
hzdz[i]=fgetc(fp);
fclose(fp);
return (m);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -