16X16汉字库可以到http://download.csdn.net/source/2437050下载。 // main.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> using namespace std; char int2char(int); void int2Binary(int n,int *arr); void printBinary(int *bit,int nbit); void printHZ(int *bit,int nbit,char c,char c1); void Binary2Hex(char Hex[],int *bit,int nbit); int _tmain(int argc, _TCHAR* argv[]) { const int BIT=8; int arr_bit[BIT]= {0}; int arr_bit1[BIT]={0}; char Hex[128]= {'/0'}; unsigned int n; FILE *fp; unsigned char HZ[32]; unsigned char qh,wh; unsigned long location; char s[3]={'/0'}; if (fopen_s(&fp,"HZK16","rb")) { cout<<"文件打开错误!"; exit(1); } cout<<"输入(N)退出,请输入一个汉字:"; cin>>s; while(s[0]!='N') { qh=s[0]-0xa0; wh=s[1]-0xa0; location=(94*(qh-1)+(wh-1))*32L; fseek(fp,location,SEEK_SET); fread(HZ,32,1,fp); cout<<"/n======汉字===================二进制=============16X16字模========/n"<<endl; for (int i=0;i<16;++i) { for (int k=0;k<BIT;++k) { arr_bit[k]=0; arr_bit1[k]=0; } n=HZ[i*2]; int n1=HZ[i*2+1]; int2Binary(n,arr_bit); int2Binary(n1,arr_bit1); printHZ(arr_bit,BIT,' ','1'); printHZ(arr_bit1,BIT,' ','1'); cout<<'/t'; printHZ(arr_bit,BIT,'1','0'); printHZ(arr_bit1,BIT,'1','0'); Binary2Hex(Hex,arr_bit,BIT); cout<<'/t'<<Hex; Binary2Hex(Hex,arr_bit1,BIT); cout<<','<<Hex; cout<<endl; } cout<<"/n输入(N)退出,请输入一个汉字:"; cin>>s; } fclose(fp); return 0; } // 1-9 返回'1'-'9' // 10-15 返回'A'-'F' char int2char(int i) { char c='/0'; if (i<=15 && i>=10) { c=char(55+i); // 'A' ASCII为65 } else { c=char(i+48); // '0' ASCII为48 } return c; } //① 整数部分 //方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数, //而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止, //最后读数时候,从最后一个余数读起,一直到最前面的一个余数。 void int2Binary(int n,int *arr) { while(n!=0) { *arr=n%2; n=n/2; ++arr; } } void printHZ(int *bit,int nbit,char c,char c1) { for (int i=nbit-1; i>=0; --i) { if (bit[i]==1) cout<<c; else cout<<c1; } } void printBinary(int *bit,int nbit) { for (int i=nbit-1; i>=0; --i) { cout<<bit[i]; } } void Binary2Hex(char Hex[],int *bit,int nbit) { int a[4]= {8,4,2,1}; int k; int tmp,n=0; k=nbit-1; Hex[n]='0'; Hex[n+1]='x'; n=n+2; for (int i=0; i<nbit/8; ++i) { for (int t=0; t<2; ++t) { tmp=0; for (int j=0; j<4; ++j) { if (bit[k]!=0) tmp=tmp+a[j]; --k; } Hex[n]=int2char(tmp); ++n; } } }