我正在处理一些位图字体。这里的想法是我给了两个文件(input.txt和font.txt)。我必须从input.txt中读取一个字符串,并使用font.txt的内容对其进行转换,然后将相应的输出打印到另一个名为output.txt的文件中。 font.txt中的每个字符都由16x8的网格表示。如何推广我的代码
我只是实现一个简单的[程序来转换单个字符A使用位图如下。有人可以帮我减少代码。
谢谢。
int main()
{
unsigned int arr[]=
{
0x00,0x00,0x10,0x38,
0x6c,0xc6,0xc6,0xfe,
0xc6,0xc6,0xc6,0xc6,
0x00,0x00,0x00,0x00
};
int i,k,j;
int bin[8];
int c=7;
for(i=0;i<16;++i)
{
bin[0]=arr[i]>>7;
bin[1]=(arr[i]>>6)&1;
bin[2]=(arr[i]>>5)&1;
bin[3]=(arr[i]>>4)&1;
bin[4]=(arr[i]>>3)&1;
bin[5]=(arr[i]>>2)&1;
bin[6]=(arr[i]>>1)&1;
bin[7]=arr[i]&1;
k=0;
for(j=0;j<4;j++){
if(bin[k]==0 && bin[k+1]==0)
{
printf("..");
}
else if(bin[k]==0 && bin[k+1]==0)
{
printf(".C");
}
else if(bin[k]==0 && bin[k+1]==0)
{
printf("C.");
}
else
{
printf("AA");
}
k=k+2;
}
printf("\n");
}
}
OUTPUT:
........
........
..AA....
..AAAA..
AAAAAA..
AA..AAAA
AA..AAAA
AAAAAAAA
AA..AAAA
AA..AAAA
AA..AAAA
AA..AAAA
........
........
........
........
该行开始的“bin [0] = ARR [I] >> 7;”可以被重构为一个for循环... – 2012-09-13 18:36:28
你的逻辑似乎是错误的,因为有3例'if(bin [k] == 0 && bin [k + 1] == 0)' – James