就像下面这样:
以下是我自己写的示例程序, 可以自己修改成其它的数据格式.(很简单, 所以没写注释)。
示例源代码
版本1
#includeintmain(void){ FILE* fphzk =NULL;inti, j, k, offset;intflag;unsignedcharbuffer[32];unsignedcharword[3] ="我";unsignedcharkey[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; fphzk = fopen("hzk16","rb");if(fphzk ==NULL){fprintf(stderr,"error hzk16\n");return1; } offset = (94*(unsignedint)(word[0]-0xa0-1)+(word[1]-0xa0-1))*32; fseek(fphzk, offset, SEEK_SET); fread(buffer,1,32, fphzk);for(k=0; k<32; k++){printf("%02X ", buffer[k]); }for(k=0; k<16; k++){for(j=0; j<2; j++){for(i=0; i<8; i++){ flag = buffer[k*2+j]&key[i];printf("%s", flag?"●":"○"); } }printf("\n"); } fclose(fphzk); fphzk =NULL;return0;}
版本2
#include#includeintmain(void){ FILE* fphzk =NULL;inti, j, k, offset;intflag;unsignedcharbuffer[32];unsignedcharword[5];unsignedcharkey[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; fphzk = fopen("hzk16","rb");if(fphzk ==NULL){fprintf(stderr,"error hzk16\n");return1; }while(1){printf("输入要生成字模的汉字(多个):");for(;;){ fgets((char*)word,3,stdin);if(*word =='\n')break; offset = (94*(unsignedint)(word[0]-0xa0-1)+(word[1]-0xa0-1))*32; fseek(fphzk, offset, SEEK_SET); fread(buffer,1,32, fphzk);for(k=0; k<16; k++){for(j=0; j<2; j++){for(i=0; i<8; i++){ flag = buffer[k*2+j]&key[i];printf("%s", flag?"●":"○"); } }printf("\n"); }printf("uchar code key[32] = {");for(k=0; k<31; k++){printf("0x%02X,", buffer[k]); }printf("0x%02X};\n", buffer[31]);printf("\n"); } } fclose(fphzk); fphzk =NULL;return0;}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-26366-2.html
#fx_4walls#加油
我滴天啊