如何概括我的代码

时间:2012-09-13 18:32:26

标签: c bitmap bit-manipulation

我正在处理一些位图字体。这里的想法是我给了两个文件(input.txt和font.txt)。我必须从input.txt读取一个字符串并使用font.txt的内容对其进行转换,然后将相应的输出打印到另一个名为output.txt的文件中。 font.txt中的每个字符都由16x8的网格表示。

我只是实现一个简单的[rogram将单个Char 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");

  }
}

输出:

........
........  
..AA....  
..AAAA..  
AAAAAA..  
AA..AAAA  
AA..AAAA  
AAAAAAAA  
AA..AAAA  
AA..AAAA  
AA..AAAA  
AA..AAAA  
........  
........  
........  
........

2 个答案:

答案 0 :(得分:1)

这会产生与你相同的输出,但我忽略了“.C”和“C”的逻辑。因为你的代码也是如此。 ; - )

#include <stdio.h>
int main() {
    unsigned int arr[]=
                       {
                        0x00,0x00,0x10,0x38,
                        0x6c,0xc6,0xc6,0xfe,
                        0xc6,0xc6,0xc6,0xc6,
                        0x00,0x00,0x00,0x00
                        };

  int i,j;
  for(i=0;i<16;++i) {
    unsigned char letter = arr[i];
    for(j =0; j < 7; j++) {
        const char *str = "..";
        if(letter & 0x80) str = "AA";
        fputs(str,stdout);
        letter <<= 1;
    }
    putchar('\n');
  }
}

答案 1 :(得分:0)

像这样的东西

 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];
      for(i=0;i<16;++i)
      {
          for(j=0;j<8;j++)
          {
            bin[j]=arr[j]>>(7-i2);
          }
          for(k=0;k<8;k+=2){
              if(bin[k]==0 && bin[k+1]==0)
              {
                printf("..");
                continue;
              }
              printf("AA");   
          }
         printf("\n");
      }
    }

我删除了printf(“。C”)和printf(“C。”),因为他们从未调用过