怎样将汉字转换成区位码,VC中是否有着样的函数直接转换,如果没有的话,怎样做??????? 怎样将汉字转换成区位码,VC中是否有着样的函数直接转换,如果没有的话,怎样做???????不会是我要吧区位码写入一个数组,在根据不同的级别进行换算吧, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 char A[4]="啊";(A[0]-?,A[1]-?)具体我也忘了 内码转换成区位码方法如下: qh=c1-0xa0 wh=c2-0xa0 其区位码就是: qw=qh*0xff+wh 该汉字在字库中离起点的位置是:offset=(94*(qh-1)+(wh-1))*32L 程序例: #include 〈graphics.h〉 #include 〈stdio.h〉 #include 〈fcntl.h〉 #include 〈io.h〉 #include 〈stdlib.h〉 #include 〈conio.h〉 #define ROW 1 //纵坐标放大倍数 #define COL 2 //横坐标放大倍数 void main() { int x,y; char *s=″汉字显示程序″; FILE *fp; char buffer[32]; //buffer用来存储一个汉字 register m,n,i,j,k; unsigned char qh,wh; unsigned long offset; int gd=DETECT,gm; //图形屏幕初始化 initgraph(&gd,&gm,″ ″); if ((fp=fopen(″hzk16″,″rb″))==NULL) //打开汉字库,该字库可以在ucdos中找到 { printf(″Can't open haz16,Please add it″); getch(); closegraph(); exit(0); } x=20; y=100; //显示位置设置 while(*s) { qh=*(s)-0xa0; //汉字区位码 wh=*(s+1)-0xa0; offset=(94*(qh-1)+(wh-1))*32L; //计算该汉字在字库中偏移量 fseek(fp,offset,SEEK_SET); fread(buffer,32,1,fp); //取出汉字32字节的点阵字模存入buffer中(一个汉字) for (i=0;i〈16;i++) //将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字 for(n=0;n〈ROW;n++) for(j=0;j〈2;j++) for(k=0;k〈8;k++) for(m=0;m〈COL;m++) if (((buffer[i*2+j]〉〉(7-k))&0x1)!=NULL) putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN); s+=2; //因为一个汉字内码占用两个字节,所以s必须加2 x+=30; } getch(); closegraph(); } 窗口分割的几个个问题 写了半辈子程序,今天才知道什么叫冒泡排序法 杂样把CSliderCtrl的thumb画成bitmap? FTP更新客户端 SDI中SetBkColor()如何使用? ADSL 共享上网的问题。 求多边形形心坐标算法 URLDownloadToCacheFile高分咨询? 请教高手 用RichEditCtrl读取大文本???????? !!急!问有没有光照模型方面的网上资料和书?----写论文用! 有关VC程序的执行问题
(A[0]-?,A[1]-?)
具体我也忘了
qh=c1-0xa0 wh=c2-0xa0
其区位码就是:
qw=qh*0xff+wh
该汉字在字库中离起点的位置是:
offset=(94*(qh-1)+(wh-1))*32L 程序例: #include 〈graphics.h〉
#include 〈stdio.h〉
#include 〈fcntl.h〉
#include 〈io.h〉
#include 〈stdlib.h〉
#include 〈conio.h〉
#define ROW 1 //纵坐标放大倍数
#define COL 2 //横坐标放大倍数
void main()
{
int x,y;
char *s=″汉字显示程序″;
FILE *fp;
char buffer[32]; //buffer用来存储一个汉字
register m,n,i,j,k;
unsigned char qh,wh;
unsigned long offset;
int gd=DETECT,gm; //图形屏幕初始化
initgraph(&gd,&gm,″ ″);
if ((fp=fopen(″hzk16″,″rb″))==NULL)
//打开汉字库,该字库可以在ucdos中找到
{ printf(″Can't open haz16,Please add it″);
getch(); closegraph(); exit(0);
}
x=20; y=100; //显示位置设置
while(*s)
{ qh=*(s)-0xa0; //汉字区位码
wh=*(s+1)-0xa0;
offset=(94*(qh-1)+(wh-1))*32L; //计算该汉字在字库中偏移量
fseek(fp,offset,SEEK_SET);
fread(buffer,32,1,fp); //取出汉字32字节的点阵字模存入buffer中(一个汉字)
for (i=0;i〈16;i++) //将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字
for(n=0;n〈ROW;n++)
for(j=0;j〈2;j++)
for(k=0;k〈8;k++)
for(m=0;m〈COL;m++)
if (((buffer[i*2+j]〉〉(7-k))&0x1)!=NULL)
putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN);
s+=2; //因为一个汉字内码占用两个字节,所以s必须加2
x+=30;
}
getch();
closegraph();
}