C语言编程: 在BMP图片上添加图片水印

简介: C语言编程: 在BMP图片上添加图片水印

一、运行环境介绍

Linux系统: Redhat6.3 (32位)


gcc 版本 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)


二、功能介绍

创建一张BMP图片,将图片当做画板,在图片的指定位置绘制图片(要当做水印的图片)。


三、核心代码

可以传入任意尺寸的图片进行生成绘制。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma pack(1) //强制1个字节对齐
//BMP的文件头
struct _BMP_HEAD
{
    char type[2]; //图片的类型 "BM"
    unsigned int size; //文件大小
    unsigned short  r1; //保留1
    unsigned short  r2; //保留2
    unsigned int seek; //数据偏移字节(真实像素点数据)
};
//BMP的参数信息
struct _BMP_INFO
{
    unsigned int size; //当前结构体大小
    unsigned int w; //宽度
    unsigned int h; //高度
    unsigned short flag; //固定为1
    unsigned short bit; //像素点的位数
    unsigned int r1; //压缩方式  0
    unsigned int r2; //水平分辨率
    unsigned int r3; //垂直分辨率
    unsigned int r4; //垂直分辨率
    unsigned int r5; //引用色彩
    unsigned int r6; //关键色彩
};
//外部引用声明
extern const unsigned char gImage_1[4800];
/*
函数功能: 显示像素点
*/
void Display_Point(char *head,int w,int x,int y,int c)
{
    unsigned char *p=(unsigned char *)(head+w*3*y+x*3);
    *(p+0)=(c>>0)&0xFF;
    *(p+1)=(c>>8)&0xFF;
    *(p+2)=(c>>16)&0xFF;
}
/*
函数功能: 绘制一张图片水印
函数参数:
char *image_data 取模数据的首地址  (横向取模--高位在前)
int w  取模字体的宽度
int h  取模字体的高度
*/
void Display_Image(char *image_data,int w,int h,char *image_head,int image_w,int x,int y)
{
    int i,j;
    int x0=x;
  int c;
    for(i=0;i<h;i++)
  {
    for(j=0;j<w;j++)
    {
      //合成RGB888颜色
      c=*(image_data+2)<<16|*(image_data+1)<<8|*(image_data+0)<<0;
        //绘制像素点
      Display_Point(image_head,image_w,x0++,y,c);
      //偏移像素点
      image_data+=3;
    }
    y++;  //换行
    x0=x; //横坐标归位
  }
}
int main(int argc,char **argv)
{
    if(argc!=4)
    {
        printf("传入的参数格式: ./a.out <新图片宽度> <新图片高度> <新图片的名称>\n");
        printf("例如: ./a.out 80 80 test.bmp");
        printf("传入的宽度和高度需要>=48\n");
        return 0;
    }
    /*1. 创建一张BMP图片*/
    FILE *fp=fopen(argv[3],"wb");
    if(fp==NULL)
    {
        printf("%s 文件创建失败.\n",argv[1]);
        return 0;
    }
    /*2. 创建BMP的文件头*/
    int cnt;
    struct _BMP_HEAD bmp_head;
    memset(&bmp_head,0,sizeof(struct _BMP_HEAD));
    //图片的类型
    bmp_head.type[0]='B';
    bmp_head.type[1]='M';
    //文件大小
    bmp_head.size=54+atoi(argv[1])*atoi(argv[2])*3;
    //数据偏移量
    bmp_head.seek=54;
    //写文件头
    cnt=fwrite(&bmp_head,1,sizeof(struct _BMP_HEAD),fp);
    printf("成功写入:%d 字节.\n",cnt);
    /*3. 写文件参数信息*/
    struct _BMP_INFO bmp_info;
    memset(&bmp_info,0,sizeof(struct _BMP_INFO));
    //当前结构体大小
    bmp_info.size=sizeof(struct _BMP_INFO);
    //图片的宽度和高度
    bmp_info.w=atoi(argv[1]);
    bmp_info.h=atoi(argv[2]);
    //图片的颜色位数
    bmp_info.bit=24;
    //标志位
    bmp_info.flag=1;
    //写入文件参数信息
    cnt=fwrite(&bmp_info,1,sizeof(struct _BMP_INFO),fp);
    printf("成功写入:%d 字节.\n",cnt);
    /*4.添加水印: 制作图片的数据*/
    int one_line_byte=bmp_info.w*3; //BMP图片一行的字节数
    while(one_line_byte%4!=0) //补齐4的倍数
    {
        one_line_byte++;
    }
    one_line_byte=one_line_byte-bmp_info.w*3; //得到需要补齐的字节数量
    //申请一个存放图片颜色数据的缓冲区
    char *head_p=malloc(bmp_info.w*3*bmp_info.h);
    //将缓冲区初始化
    memset(head_p,0xFF,bmp_info.w*3*bmp_info.h);
    //绘制水印
    Display_Image((char *)gImage_1,40,40,head_p,bmp_info.w,60,60);
    /*5. 写入位图数据*/
    int w,h;
    char *tmp_p;
    for(h=bmp_info.h-1;h>=0;h--)
    {
        tmp_p=head_p+h*bmp_info.w*3;     //从缓冲区的最后一行开始读取
        fwrite(tmp_p,1,bmp_info.w*3,fp); //写一行数据
        if(one_line_byte) //判断是否需要补齐
        fwrite(tmp_p,1,one_line_byte,fp); //写补齐的数据(占位而已--没有显示作用)
    }
    /*6. 关闭文件*/
    fclose(fp);
    free(head_p);
    return 0;
}
const unsigned char gImage_1[4800] = { /* 0X10,0X18,0X00,0X28,0X00,0X28,0X00,0X39, */
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XFC,0XFC,0XF6,0XF7,0XF6,
0XFD,0XFD,0XFD,0XF5,0XF9,0XFB,0XC2,0XC4,0XC4,0X91,0X90,0X8D,0X75,0X71,0X6C,0X71,
0X6D,0X69,0X86,0X83,0X7F,0XB2,0XB0,0XAD,0XE7,0XE7,0XE6,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFC,0XFC,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFE,0XFE,0XFE,0XEA,0XEB,0XEB,0XAA,0XA2,0X9D,0X7A,0X6B,0X60,0X60,0X4E,
0X41,0X50,0X40,0X33,0X41,0X33,0X28,0X30,0X28,0X1F,0X2B,0X24,0X1B,0X2F,0X29,0X20,
0X44,0X3E,0X36,0X76,0X72,0X6C,0XC7,0XC5,0XC4,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFE,0XFC,0XFD,0XFD,0XB1,0XA7,0XA3,0X80,0X62,0X51,
0X87,0X62,0X4B,0X8B,0X6A,0X52,0X7E,0X60,0X4C,0X66,0X4F,0X3E,0X4E,0X3E,0X30,0X38,
0X2E,0X24,0X2C,0X24,0X1B,0X25,0X1F,0X15,0X1E,0X17,0X0E,0X15,0X0D,0X04,0X1A,0X12,
0X09,0X5D,0X58,0X52,0XD3,0XD1,0XD0,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,
0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,
0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XE6,0XE6,0XE6,0X80,
0X6E,0X63,0X98,0X76,0X61,0XC4,0X96,0X7C,0XAC,0X7F,0X62,0X89,0X61,0X47,0X6C,0X4B,
0X34,0X56,0X3D,0X2B,0X43,0X32,0X24,0X32,0X27,0X1E,0X29,0X22,0X1A,0X28,0X21,0X18,
0X27,0X20,0X17,0X27,0X20,0X17,0X26,0X1F,0X16,0X18,0X10,0X07,0X1D,0X16,0X0C,0X91,
0X8D,0X89,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,
0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XD9,0XD9,0XD9,0X5C,0X49,0X3D,0X83,0X5F,0X46,0XAE,0X84,0X6A,0XA0,0X6B,0X4B,
0X8B,0X56,0X35,0X74,0X47,0X2B,0X5F,0X3D,0X26,0X4C,0X34,0X23,0X3C,0X2C,0X1E,0X2C,
0X23,0X1A,0X26,0X20,0X17,0X27,0X20,0X17,0X27,0X20,0X17,0X27,0X20,0X17,0X27,0X20,
0X17,0X28,0X21,0X18,0X23,0X1C,0X13,0X11,0X09,0X00,0X79,0X75,0X70,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XE8,0XE8,0XE8,0X4D,0X41,0X37,0X65,0X48,0X35,0X81,
0X60,0X49,0X7D,0X51,0X35,0X7B,0X4A,0X2B,0X75,0X47,0X29,0X60,0X39,0X1D,0X4F,0X30,
0X1A,0X48,0X32,0X21,0X39,0X2A,0X1E,0X2A,0X22,0X18,0X26,0X20,0X17,0X27,0X20,0X17,
0X21,0X1A,0X10,0X22,0X1B,0X11,0X27,0X20,0X17,0X27,0X20,0X17,0X27,0X20,0X17,0X26,
0X1F,0X16,0X10,0X08,0X00,0X8A,0X86,0X82,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0X64,0X5D,
0X57,0X3D,0X2A,0X1B,0X60,0X48,0X37,0X5E,0X40,0X2B,0X61,0X3E,0X26,0X64,0X3F,0X26,
0X64,0X40,0X27,0X88,0X70,0X5E,0X71,0X5D,0X4F,0X36,0X23,0X14,0X31,0X24,0X1A,0X27,
0X20,0X18,0X26,0X1F,0X16,0X26,0X1E,0X15,0X3E,0X37,0X2F,0X33,0X2C,0X24,0X1B,0X14,
0X0A,0X28,0X21,0X18,0X27,0X20,0X17,0X27,0X20,0X17,0X24,0X1D,0X14,0X17,0X10,0X06,
0XBF,0XBE,0XBB,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XAA,0XA7,0XA4,0X1B,0X12,0X08,0X41,0X33,0X27,0X45,0X33,0X24,0X49,
0X32,0X22,0X50,0X36,0X24,0X50,0X33,0X20,0X5D,0X4E,0X43,0X8C,0X8E,0X8F,0XFD,0XFD,
0XFD,0X96,0X8F,0X8A,0X1D,0X13,0X0A,0X26,0X20,0X17,0X20,0X18,0X0F,0X49,0X46,0X41,
0XDE,0XDE,0XDE,0XE9,0XE8,0XE8,0X63,0X5E,0X58,0X19,0X12,0X09,0X27,0X20,0X17,0X27,
0X20,0X17,0X27,0X20,0X17,0X1B,0X13,0X0A,0X45,0X3E,0X37,0XF8,0XF8,0XF8,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFE,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XF7,0XF6,0XF6,0X3F,0X39,0X31,0X20,0X19,
0X10,0X2E,0X25,0X1C,0X33,0X27,0X1C,0X3B,0X2B,0X1E,0X3E,0X2B,0X1C,0X47,0X36,0X29,
0X51,0X52,0X52,0X46,0X47,0X48,0XA8,0XA9,0XA9,0XFD,0XFD,0XFD,0X43,0X3D,0X36,0X1D,
0X16,0X0C,0X28,0X23,0X1C,0X6A,0X6A,0X6A,0X6A,0X6A,0X6A,0XFD,0XFD,0XFD,0XEE,0XED,
0XED,0X2F,0X28,0X20,0X22,0X1B,0X12,0X27,0X20,0X17,0X27,0X20,0X17,0X27,0X20,0X17,
0X17,0X0D,0X04,0XB4,0XAC,0XA9,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XB5,0XB3,0XB0,0X15,0X0E,0X04,0X27,0X21,0X17,0X27,0X21,0X18,0X28,0X20,0X17,0X2C,
0X22,0X19,0X25,0X19,0X0F,0X59,0X51,0X4A,0XB4,0XB5,0XB6,0XEB,0XEB,0XEB,0XBC,0XBC,
0XBC,0XFD,0XFD,0XFD,0X76,0X72,0X6C,0X14,0X0C,0X01,0X49,0X46,0X42,0X57,0X57,0X58,
0X42,0X42,0X42,0XFC,0XFC,0XFC,0XFD,0XFD,0XFD,0X60,0X5B,0X55,0X19,0X12,0X08,0X27,
0X20,0X17,0X27,0X20,0X17,0X27,0X20,0X17,0X1C,0X14,0X0B,0X69,0X57,0X53,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,
0XFC,0XFC,0XFC,0XFF,0XFF,0XFF,0XFD,0XFC,0XFC,0XE1,0XE0,0XE0,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0X70,0X6B,0X65,0X16,0X0F,0X05,0X27,0X20,
0X17,0X27,0X20,0X17,0X27,0X20,0X17,0X26,0X1F,0X17,0X16,0X0F,0X06,0X75,0X70,0X67,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0X7C,0X78,0X73,0X08,
0X01,0X00,0X9F,0X9C,0X99,0X66,0X67,0X67,0XB1,0XB1,0XB2,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0X6B,0X65,0X5E,0X18,0X10,0X07,0X27,0X20,0X17,0X27,0X20,0X17,0X26,0X20,0X17,
0X25,0X1E,0X15,0X3C,0X2D,0X25,0XEB,0XE7,0XE8,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC1,0XBF,0XBD,0XB9,0XB7,0XB4,0XF0,0XF0,
0XEF,0X5E,0X59,0X52,0X9A,0X97,0X93,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFB,0XFA,0XFA,
0X45,0X3E,0X37,0X1E,0X17,0X0D,0X27,0X20,0X17,0X27,0X20,0X17,0X27,0X20,0X17,0X27,
0X20,0X17,0X1C,0X15,0X0C,0X4E,0X49,0X41,0XFD,0XFD,0XF0,0XFD,0XFC,0XF5,0XFD,0XFD,
0XFC,0XFD,0XFD,0XFD,0X54,0X4F,0X48,0X09,0X01,0X00,0X90,0X8C,0X86,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XF7,0XFD,0XFB,0XEF,0X49,0X43,0X3B,0X1E,0X16,0X0D,0X27,
0X20,0X17,0X27,0X20,0X17,0X27,0X20,0X17,0X26,0X20,0X16,0X2D,0X21,0X14,0XC6,0XC1,
0XBF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X81,0X7E,0X79,0X17,0X0F,0X06,0X43,0X3D,0X35,0X3F,0X38,0X30,0X0F,0X08,0X00,0XAA,
0XA7,0XA4,0XFD,0XFD,0XFD,0XEB,0XEA,0XE9,0X31,0X2A,0X22,0X22,0X1B,0X12,0X27,0X20,
0X17,0X27,0X20,0X17,0X27,0X20,0X17,0X27,0X20,0X17,0X26,0X1F,0X16,0X1C,0X16,0X0E,
0XB3,0XAE,0X9F,0XFD,0XFD,0XF5,0XFD,0XFD,0XFD,0XB9,0XB5,0XAC,0X1E,0X16,0X0E,0X1E,
0X17,0X0D,0X3D,0X38,0X30,0XF3,0XF0,0XE5,0XFD,0XFD,0XF2,0XFD,0XFD,0XF5,0XB2,0XAD,
0XA1,0X1B,0X15,0X0D,0X26,0X1F,0X16,0X27,0X20,0X17,0X27,0X20,0X17,0X26,0X20,0X17,
0X28,0X20,0X17,0X2E,0X21,0X11,0XAB,0XA7,0XA2,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDA,0XDA,0XD8,0X3C,0X35,0X2D,0X18,0X11,
0X07,0X22,0X1A,0X11,0X21,0X1A,0X11,0X22,0X1B,0X12,0XE2,0XE1,0XE0,0XF3,0XF3,0XEB,
0X28,0X21,0X15,0X24,0X1D,0X14,0X27,0X20,0X17,0X27,0X20,0X17,0X27,0X20,0X17,0X27,
0X20,0X17,0X27,0X20,0X18,0X22,0X18,0X0F,0X2B,0X1C,0X12,0X8C,0X79,0X6A,0X8D,0X79,
0X6A,0X2C,0X18,0X0B,0X22,0X0F,0X01,0X29,0X16,0X08,0X1C,0X08,0X00,0X58,0X45,0X36,
0XBA,0XAE,0X9A,0X9E,0X95,0X86,0X2C,0X25,0X1D,0X21,0X1A,0X11,0X27,0X20,0X17,0X27,
0X20,0X17,0X27,0X20,0X17,0X26,0X20,0X17,0X2D,0X24,0X19,0X32,0X24,0X0F,0XA9,0XA5,
0X9B,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,
0XFD,0XFD,0XFD,0X7B,0X76,0X71,0X14,0X0C,0X02,0X27,0X21,0X18,0X28,0X21,0X18,0X17,
0X10,0X06,0X68,0X63,0X59,0X77,0X72,0X9D,0X13,0X0E,0X11,0X28,0X21,0X13,0X27,0X20,
0X17,0X27,0X20,0X17,0X27,0X20,0X18,0X27,0X1C,0X10,0X28,0X13,0X04,0X28,0X20,0X15,
0X21,0X3B,0X3A,0X0C,0X50,0X58,0X05,0X6A,0X7A,0X14,0X84,0X9B,0X1D,0X8A,0XA8,0X1C,
0X80,0XA5,0X1E,0X72,0X98,0X14,0X50,0X71,0X14,0X33,0X49,0X16,0X1A,0X1B,0X23,0X14,
0X04,0X29,0X18,0X07,0X27,0X1E,0X14,0X27,0X20,0X18,0X26,0X20,0X17,0X2A,0X21,0X18,
0X38,0X2B,0X1C,0X3F,0X2F,0X12,0X60,0X5D,0X5E,0XF5,0XF6,0XF8,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,0XFB,0XFB,0XFB,0XDB,0XDA,0XD9,0X21,0X1A,
0X11,0X24,0X1D,0X13,0X27,0X20,0X17,0X28,0X22,0X14,0X24,0X14,0X1D,0X0C,0X00,0XC2,
0X1E,0X10,0X8D,0X21,0X1E,0X00,0X29,0X21,0X18,0X27,0X20,0X18,0X28,0X18,0X09,0X26,
0X29,0X25,0X1F,0X6A,0X84,0X19,0XA4,0XD2,0X17,0XC8,0XF9,0X25,0XDD,0XFD,0X3D,0XE5,
0XFD,0X39,0XE1,0XFD,0X26,0XD7,0XFD,0X23,0XCF,0XFD,0X1F,0XC3,0XFD,0X1A,0XB4,0XFD,
0X16,0X9E,0XFD,0X15,0X89,0XEC,0X1A,0X70,0XB6,0X21,0X46,0X61,0X28,0X1D,0X13,0X27,
0X1A,0X0B,0X27,0X21,0X19,0X32,0X27,0X1B,0X46,0X36,0X19,0X3D,0X32,0X21,0X00,0X00,
0X93,0X9D,0X9B,0XBB,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,
0XFB,0XFB,0XFB,0XFE,0XFE,0XFE,0X81,0X80,0X7A,0X11,0X0A,0X00,0X28,0X21,0X18,0X29,
0X23,0X11,0X1A,0X11,0X2B,0X0F,0X00,0XD5,0X23,0X09,0XFD,0X1D,0X14,0X4E,0X22,0X1E,
0X00,0X2A,0X1A,0X0B,0X22,0X48,0X5F,0X17,0XA2,0XEC,0X16,0XBC,0XFD,0X13,0XC1,0XFD,
0X36,0XCC,0XF8,0XA1,0XEC,0XFA,0XC3,0XF6,0XFB,0X99,0XEE,0XFA,0X3F,0XDD,0XF6,0X34,
0XD6,0XF6,0X2E,0XC8,0XF7,0X26,0XB4,0XF7,0X1B,0X9B,0XF9,0X14,0X8E,0XFC,0X13,0X99,
0XFD,0X13,0X9A,0XFD,0X19,0X7C,0XCD,0X23,0X38,0X48,0X30,0X21,0X11,0X41,0X32,0X1B,
0X3D,0X33,0X06,0X26,0X16,0X96,0X0A,0X00,0XFD,0X63,0X5F,0X99,0XFD,0XFD,0XFC,0XFD,
0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFE,0XF4,0XF4,
0XF4,0X43,0X3D,0X36,0X18,0X10,0X07,0X2A,0X23,0X0E,0X16,0X10,0X43,0X0D,0X00,0XC6,
0X1C,0X04,0XFB,0X2B,0X10,0XF3,0X1C,0X14,0X4D,0X20,0X15,0X00,0X22,0X48,0X5D,0X15,
0XA2,0XFC,0X19,0X87,0XC8,0X17,0X9A,0XDD,0X21,0XC3,0XFD,0X40,0XC7,0XFB,0X44,0XCB,
0XF7,0X30,0XC9,0XF7,0X27,0XC4,0XF7,0X24,0XBC,0XF7,0X20,0XAE,0XF8,0X1A,0X9C,0XF8,
0X15,0X8F,0XFA,0X15,0X98,0XFD,0X16,0X83,0XE4,0X17,0X80,0XDC,0X10,0X9F,0XFD,0X23,
0X55,0X7F,0X41,0X29,0X06,0X39,0X2F,0X07,0X27,0X18,0X7F,0X21,0X06,0XFD,0X15,0X00,
0XFD,0X22,0X13,0XB3,0XEC,0XEE,0XE3,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFD,0XDA,0XD9,0XD8,0X2E,0X27,0X1F,0X1C,
0X14,0X00,0X21,0X18,0X3C,0X11,0X03,0XE7,0X14,0X04,0XDD,0X24,0X0A,0XFD,0X36,0X17,
0XFC,0X23,0X15,0X7B,0X18,0X0D,0X00,0X1D,0X2B,0X20,0X1A,0X53,0X74,0X1E,0X30,0X38,
0X15,0X70,0X9F,0X0E,0XA6,0XF7,0X0E,0XAE,0XFD,0X13,0XA6,0XFD,0X16,0X9E,0XFD,0X16,
0X95,0XFD,0X17,0X8B,0XFD,0X16,0X8B,0XFD,0X16,0X8B,0XFD,0X16,0X67,0XAB,0X1D,0X31,
0X41,0X18,0X5A,0X91,0X25,0X40,0X51,0X37,0X27,0X00,0X2F,0X27,0X1A,0X26,0X14,0X9B,
0X24,0X08,0XFD,0X1C,0X04,0XFD,0X16,0X00,0XFD,0X27,0X15,0XD1,0XF1,0XF2,0XEA,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XD3,0XD2,0XD0,0X3F,0X33,0X2A,0X2A,0X15,0X00,0X18,0X08,0XBA,
0X12,0X07,0XF8,0X18,0X06,0XE1,0X2B,0X0E,0XFD,0X44,0X1F,0XFD,0X3C,0X22,0XC9,0X1E,
0X10,0X4C,0X14,0X0A,0X02,0X1F,0X15,0X00,0X22,0X12,0X00,0X1B,0X2D,0X2F,0X16,0X56,
0X7C,0X15,0X6E,0XB1,0X15,0X75,0XCB,0X16,0X6E,0XD0,0X16,0X61,0XBD,0X17,0X50,0X8B,
0X1B,0X30,0X3E,0X24,0X16,0X00,0X29,0X1E,0X02,0X28,0X1D,0X00,0X2B,0X1C,0X09,0X27,
0X1B,0X65,0X27,0X0F,0XD9,0X26,0X08,0XFD,0X20,0X06,0XFD,0X1D,0X05,0XFB,0X16,0X00,
0XFD,0X1E,0X11,0X89,0XDA,0XDA,0XC7,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XE9,
0XE7,0XE6,0X80,0X6B,0X58,0X41,0X23,0X37,0X19,0X05,0XE8,0X19,0X08,0XFA,0X20,0X08,
0XF3,0X2D,0X0E,0XFD,0X48,0X21,0XFD,0X5C,0X35,0XFD,0X4D,0X32,0XD3,0X31,0X23,0X89,
0X1E,0X16,0X4C,0X17,0X0B,0X1C,0X13,0X03,0X00,0X11,0X08,0X00,0X0F,0X0E,0X00,0X10,
0X11,0X00,0X13,0X0F,0X00,0X17,0X0C,0X00,0X1C,0X11,0X07,0X1E,0X17,0X27,0X22,0X18,
0X50,0X28,0X17,0X8E,0X2B,0X12,0XDA,0X2C,0X0D,0XFD,0X27,0X09,0XFD,0X23,0X08,0XFB,
0X1F,0X06,0XFB,0X1E,0X04,0XFD,0X18,0X03,0XD6,0X16,0X10,0X12,0X3E,0X38,0X29,0XEA,
0XEA,0XE9,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,
0XFE,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0X67,0X4E,0X35,
0X2D,0X16,0X38,0X14,0X01,0XD9,0X1F,0X04,0XFD,0X2E,0X0F,0XFD,0X31,0X0F,0XFD,0X3F,
0X16,0XFD,0X55,0X2B,0XFD,0X67,0X40,0XFD,0X6B,0X4B,0XFD,0X64,0X4A,0XEE,0X58,0X42,
0XD3,0X4C,0X37,0XBE,0X43,0X2E,0XB1,0X3F,0X28,0XAD,0X3C,0X25,0XB2,0X3C,0X23,0XBF,
0X3D,0X21,0XD4,0X3F,0X1F,0XEF,0X3E,0X1B,0XFD,0X38,0X15,0XFD,0X2F,0X0F,0XFD,0X2A,
0X0D,0XFD,0X26,0X0A,0XFB,0X1F,0X07,0XFC,0X18,0X00,0XFD,0X16,0X01,0XD2,0X1E,0X17,
0X2F,0X2A,0X23,0X0C,0X21,0X18,0X0E,0X64,0X5F,0X58,0XFC,0XFC,0XFD,0XFD,0XFD,0XFD,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XDD,0XDC,0XDB,0X28,0X21,0X19,0X23,0X1B,0X01,0X3A,0X34,0X41,0X33,0X1F,
0XC7,0X1E,0X00,0XF9,0X33,0X10,0XFD,0X3D,0X16,0XFD,0X3A,0X13,0XFD,0X37,0X11,0XFD,
0X3E,0X18,0XFD,0X4B,0X26,0XFD,0X57,0X32,0XFD,0X5B,0X36,0XFD,0X5B,0X36,0XFD,0X58,
0X32,0XFD,0X54,0X2D,0XFD,0X4D,0X27,0XFD,0X45,0X20,0XFD,0X3E,0X1B,0XFD,0X35,0X14,
0XFD,0X31,0X11,0XFD,0X2D,0X0F,0XFD,0X26,0X0C,0XFD,0X1F,0X06,0XFD,0X10,0X00,0XF2,
0X31,0X20,0XB6,0X2D,0X27,0X2B,0X25,0X1F,0X07,0X26,0X1F,0X17,0X2D,0X25,0X1C,0X2F,
0X27,0X19,0XA5,0XA2,0X9E,0XFD,0XFD,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,
0XFE,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XB4,0XB1,0XAE,0X17,0X0F,0X06,
0X17,0X10,0X08,0XAB,0XA7,0X94,0XD7,0XD5,0XC8,0X5B,0X50,0XA4,0X26,0X0A,0XD1,0X2E,
0X05,0XFA,0X3B,0X11,0XFD,0X3E,0X17,0XFD,0X3C,0X18,0XFD,0X3A,0X16,0XFD,0X38,0X13,
0XFD,0X36,0X11,0XFD,0X36,0X11,0XFD,0X37,0X12,0XFD,0X38,0X13,0XFD,0X38,0X15,0XFD,
0X38,0X16,0XFD,0X36,0X15,0XFD,0X2F,0X12,0XFD,0X2A,0X0E,0XFD,0X26,0X0C,0XFD,0X20,
0X07,0XF0,0X20,0X0D,0XBC,0X6B,0X61,0X95,0XDA,0XD6,0XB3,0X7D,0X78,0X60,0X18,0X10,
0X0A,0X27,0X20,0X17,0X23,0X1C,0X14,0X35,0X2E,0X21,0X4E,0X48,0X3B,0XEB,0XEA,0XEA,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFE,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0X9E,0X9A,0X97,0X13,0X0B,0X01,0X26,0X1F,0X16,0XDA,0XD6,0XCD,0XFD,0XFD,
0XFD,0XF6,0XF7,0XE4,0XB2,0XAF,0XB2,0X67,0X5A,0XAA,0X3B,0X21,0XC6,0X2C,0X0A,0XE7,
0X2D,0X08,0XFB,0X32,0X0B,0XFD,0X35,0X0F,0XFD,0X36,0X11,0XFD,0X36,0X12,0XFD,0X36,
0X12,0XFD,0X34,0X11,0XFD,0X2F,0X0F,0XFD,0X29,0X0A,0XFD,0X2A,0X0D,0XFD,0X28,0X0F,
0XEF,0X21,0X0B,0XD6,0X19,0X08,0XAB,0X08,0X00,0X8B,0X16,0X12,0X92,0XE7,0XE4,0XD7,
0XFD,0XFD,0XEC,0XAD,0XA8,0X94,0X19,0X12,0X0A,0X27,0X20,0X17,0X27,0X20,0X17,0X28,
0X21,0X18,0X31,0X29,0X1A,0X9B,0X97,0X93,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,
0XFE,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0X9B,0X97,0X93,0X0F,0X08,0X00,
0X36,0X30,0X26,0XEB,0XE8,0XDC,0XFD,0XFD,0XFC,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XF8,
0XF9,0XE7,0XD0,0XCF,0XC4,0X9D,0X99,0XB3,0X73,0X68,0XB6,0X55,0X44,0XC3,0X42,0X2D,
0XD3,0X36,0X1F,0XE1,0X31,0X17,0XEB,0X2E,0X14,0XEF,0X2F,0X16,0XE8,0X35,0X1E,0XDD,
0X44,0X32,0XCA,0X32,0X22,0XAE,0X12,0X04,0XAD,0X10,0X02,0XAF,0X04,0X02,0XA3,0X07,
0X01,0XCE,0X00,0X00,0XDD,0XBF,0XBC,0XE1,0XFD,0XFD,0XE1,0XC5,0XBF,0XA8,0X22,0X1B,
0X13,0X25,0X1E,0X15,0X27,0X20,0X17,0X24,0X1D,0X15,0X29,0X22,0X16,0X59,0X53,0X4B,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFE,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XAA,0XA8,0XA4,0X0F,0X08,0X00,0X3B,0X35,0X2B,0XED,0XEA,0XDC,0XFD,0XFD,
0XF7,0XFC,0XFD,0XFB,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFB,
0XFC,0XFC,0XEB,0XEC,0XED,0XDA,0XDA,0XDB,0XCF,0XCB,0XCA,0XCA,0XC0,0XBE,0XCA,0XBB,
0XB9,0XCA,0XBE,0XBC,0XC7,0XCD,0XCD,0XCB,0XDE,0XDF,0XBE,0X5D,0X55,0XA6,0X1A,0X00,
0XF2,0X29,0X0A,0XFD,0X10,0X08,0XD6,0X19,0X08,0XEF,0X00,0X00,0XF3,0X90,0X8E,0XD6,
0XFD,0XFD,0XDC,0XCB,0XC5,0XAB,0X26,0X1F,0X16,0X25,0X1E,0X15,0X27,0X20,0X17,0X26,
0X1F,0X16,0X28,0X20,0X17,0X3A,0X32,0X29,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XCD,0XCB,0XC9,0X19,0X11,0X08,
0X32,0X2B,0X21,0XE4,0XE0,0XD0,0XFD,0XFC,0XF3,0XFC,0XFC,0XFA,0XFC,0XFD,0XFC,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFC,0XFD,0XE9,0X5A,0X50,0XBF,0X20,0X00,0XFD,0X2B,0X0B,0XFD,0X17,0X0E,0XE1,0X20,
0X0B,0XF4,0X00,0X00,0XFA,0X76,0X73,0XD9,0XFD,0XFD,0XD8,0XC2,0XBC,0XA2,0X21,0X1A,
0X12,0X25,0X1E,0X15,0X24,0X1D,0X14,0X27,0X20,0X17,0X27,0X1F,0X17,0X2D,0X25,0X1D,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XF5,0XF5,0XF4,0X39,0X32,0X2A,0X1A,0X13,0X0A,0XC9,0XC5,0XB4,0XFD,0XFD,
0XF0,0XFB,0XF9,0XF5,0XFC,0XFD,0XFB,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XF5,0XF5,0XE3,0X53,0X4A,0XBB,0X1E,0X00,
0XFD,0X29,0X0B,0XFD,0X22,0X0C,0XFB,0X22,0X0B,0XFC,0X00,0X00,0XFD,0X72,0X6F,0XE2,
0XFD,0XFD,0XD6,0XA5,0X9E,0X88,0X18,0X11,0X0A,0X27,0X20,0X17,0X25,0X1E,0X15,0X24,
0X1D,0X13,0X27,0X1F,0X17,0X29,0X22,0X1A,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0X7F,0X7C,0X76,
0X02,0X00,0X00,0X94,0X8E,0X80,0XFD,0XFD,0XEF,0XF7,0XF5,0XEB,0XFC,0XFB,0XF8,0XFC,
0XFD,0XFC,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XF9,0XF9,0XE6,0X58,0X51,0XBC,0X1A,0X00,0XFD,0X29,0X0B,0XFD,0X28,0X0A,0XFD,0X1E,
0X05,0XFD,0X00,0X00,0XFC,0X9E,0X99,0XD4,0XFD,0XFD,0XD6,0X70,0X69,0X5A,0X0F,0X07,
0X00,0X4A,0X44,0X3D,0XAC,0XAA,0XA7,0X19,0X12,0X08,0X22,0X1B,0X12,0X2E,0X27,0X1E,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XDF,0XDD,0XDD,0X1B,0X14,0X0D,0X44,0X3E,0X32,0XF5,0XF1,
0XDB,0XF7,0XF3,0XE4,0XF9,0XF6,0XEF,0XFC,0XFC,0XF9,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XF3,0X89,0X88,0XBA,0X12,0X00,
0XE4,0X1B,0X00,0XF8,0X19,0X00,0XF7,0X1C,0X09,0XE7,0X66,0X5D,0XC1,0XF3,0XED,0XC9,
0XE3,0XDC,0XBE,0X31,0X2B,0X21,0X0D,0X05,0X00,0X9D,0X99,0X95,0XFD,0XFD,0XFD,0X8D,
0X8A,0X86,0X07,0X00,0X00,0X39,0X32,0X2A,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0X8F,0X8B,0X87,0X01,0X00,0X00,0XA5,0X9F,0X8C,0XFD,0XFD,0XE9,0XF4,0XF0,0XE2,0XF9,
0XF6,0XEE,0XFC,0XFB,0XF8,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XE8,0XE7,0XDF,0XAD,0XA9,0XBF,0X91,0X8A,0XBD,0X96,0X8F,0XB8,0XBB,
0XB6,0XB0,0XEF,0XEA,0XC2,0XFD,0XFD,0XDD,0X83,0X7D,0X6C,0X07,0X00,0X00,0X49,0X43,
0X3B,0XF8,0XF7,0XF7,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XA6,0XA3,0X9F,0XAB,0XA8,0XA5,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFE,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0X65,0X56,0X49,0X26,0X17,
0X0D,0XDC,0XD7,0XBF,0XFC,0XF8,0XE1,0XF3,0XEF,0XE0,0XF7,0XF4,0XEA,0XFA,0XF8,0XF2,
0XFC,0XFB,0XF9,0XFD,0XFD,0XFC,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFC,0XFC,0XFB,0XF9,0XFD,0XFB,0XF5,0XFD,0XFC,
0XE9,0XFB,0XF8,0XDA,0XF8,0XF4,0XD1,0XF6,0XF1,0XD4,0XFD,0XFB,0XDE,0XC2,0XBB,0XA3,
0X1D,0X13,0X0B,0X33,0X26,0X16,0XDA,0XD8,0XD4,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFE,0XFE,0XFE,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XCC,0XCE,0XEB,0X5B,0X90,0XD8,0X0D,0X24,0X31,0X4C,0X36,0X24,0XEA,0XE4,0XC9,0XFC,
0XF6,0XDE,0XF1,0XED,0XDB,0XF5,0XF1,0XE3,0XF7,0XF4,0XEA,0XF9,0XF7,0XEF,0XFA,0XF9,
0XF3,0XFB,0XFA,0XF6,0XFB,0XFA,0XF6,0XFB,0XFA,0XF5,0XFA,0XF8,0XF3,0XF9,0XF7,0XEF,
0XF7,0XF4,0XEA,0XF5,0XF1,0XE3,0XF2,0XEE,0XDB,0XF0,0XEB,0XD4,0XF0,0XEB,0XD5,0XFD,
0XF9,0XDE,0XD7,0XD1,0XB6,0X36,0X27,0X1B,0X10,0X09,0X08,0X6C,0X7C,0XA7,0XFD,0XF7,
0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFE,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFD,0XA0,0XAF,0XDD,0X07,0X78,0XDB,0X03,0XC0,0XFD,0X17,0XC9,
0XEF,0X13,0X40,0X47,0X4B,0X31,0X21,0XD9,0XCE,0XB2,0XFD,0XFB,0XDF,0XF2,0XED,0XD6,
0XF1,0XEC,0XDA,0XF3,0XEF,0XDF,0XF4,0XF1,0XE2,0XF5,0XF2,0XE5,0XF5,0XF2,0XE5,0XF5,
0XF2,0XE4,0XF4,0XF1,0XE2,0XF3,0XEF,0XDE,0XF1,0XEC,0XD9,0XEF,0XEA,0XD4,0XEE,0XE9,
0XD4,0XF4,0XF0,0XDB,0XFD,0XFD,0XE1,0XC7,0XBE,0XA4,0X38,0X20,0X13,0X18,0X1D,0X19,
0X15,0XA2,0XC0,0X01,0XAF,0XFC,0X32,0X7D,0XD4,0XD9,0XDB,0XED,0XFD,0XFD,0XFD,0XFE,
0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFE,0XFE,0XFE,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XF5,0XF3,0XF3,0X25,0X53,0XBE,
0X09,0X99,0XFC,0X15,0XCB,0XF9,0X13,0XD3,0XFD,0X14,0XD5,0XFD,0X0F,0X70,0X83,0X2E,
0X2B,0X24,0XA2,0X8C,0X71,0XF3,0XE8,0XC7,0XFD,0XF8,0XDB,0XF5,0XEF,0XD5,0XF0,0XEA,
0XD3,0XEF,0XEA,0XD4,0XF0,0XEB,0XD5,0XF0,0XEA,0XD5,0XEF,0XEA,0XD4,0XEF,0XE9,0XD3,
0XF0,0XEB,0XD4,0XF7,0XF2,0XDB,0XFD,0XFC,0XE2,0XED,0XE4,0XC7,0X8F,0X7E,0X64,0X25,
0X13,0X08,0X15,0X4B,0X52,0X31,0XC5,0XE3,0X4E,0XE6,0XFD,0X35,0XD3,0XFD,0X00,0X7E,
0XF1,0X52,0X6F,0XC1,0XFD,0XFD,0XFD,0XFE,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFD,0XFD,
0XFD,0XFD,0XC1,0XC3,0XDC,0X09,0X5A,0XD7,0X13,0XB7,0XFC,0X13,0XC6,0XF8,0X14,0XC8,
0XF8,0X13,0XCA,0XFC,0X13,0XCF,0XFD,0X10,0X9F,0XD7,0X0F,0X4A,0X69,0X48,0X4A,0X46,
0X9D,0X8B,0X70,0XD9,0XC7,0XA3,0XF3,0XE7,0XC2,0XFC,0XF4,0XD1,0XFB,0XF5,0XD7,0XFA,
0XF4,0XD7,0XFD,0XF7,0XD9,0XFD,0XF5,0XD5,0XF2,0XE7,0XC6,0XD3,0XC3,0XA1,0X91,0X7F,
0X62,0X3E,0X34,0X29,0X11,0X30,0X43,0X16,0X86,0XB5,0X12,0XCC,0XFD,0X1E,0XD3,0XFD,
0X55,0XD7,0XFA,0X78,0XE0,0XFB,0X3D,0XAC,0XFA,0X19,0X4E,0XBF,0XE7,0XE5,0XEB,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XD1,0XD0,0XE0,0X07,0X52,0XD4,
0X0F,0XA5,0XFD,0X15,0XBB,0XF8,0X14,0XBD,0XF7,0X14,0XBA,0XF7,0X14,0XB3,0XF7,0X14,
0XB0,0XFD,0X12,0XAD,0XFD,0X0B,0X8F,0XDE,0X0A,0X66,0X99,0X24,0X52,0X6F,0X4C,0X5C,
0X6B,0X64,0X64,0X67,0X7C,0X74,0X64,0X89,0X82,0X70,0X76,0X6F,0X61,0X64,0X64,0X63,
0X49,0X51,0X58,0X21,0X41,0X57,0X0D,0X50,0X7F,0X11,0X7A,0XCB,0X16,0X9F,0XFD,0X15,
0XAF,0XFD,0X15,0XB2,0XF9,0X12,0XB8,0XF8,0X12,0XBA,0XF8,0X25,0XBC,0XF8,0X22,0XA7,
0XFD,0X10,0X4F,0XCC,0XE3,0XE0,0XE6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFE,0XFD,
0XFD,0XFD,0XFD,0XFD,0XFB,0X89,0X97,0XCB,0X09,0X51,0XD2,0X01,0X79,0XF1,0X0C,0X99,
0XFC,0X11,0XA3,0XFD,0X14,0XA3,0XFD,0X14,0X9E,0XFB,0X14,0X9A,0XFB,0X12,0X99,0XFD,
0X0F,0X91,0XFD,0X03,0X71,0XFD,0X00,0X3B,0XCF,0X22,0X35,0X80,0XA9,0XA7,0XAE,0XCD,
0XCB,0XCB,0X8D,0X8D,0X9A,0X0B,0X25,0X81,0X00,0X41,0XD9,0X0A,0X76,0XFD,0X14,0X91,
0XFD,0X16,0X95,0XFD,0X17,0X92,0XFC,0X16,0X97,0XFB,0X16,0XA1,0XFC,0X15,0XA5,0XFD,
0X10,0X9E,0XFD,0X01,0X80,0XF9,0X00,0X4F,0XD8,0X80,0X91,0XCA,0XFD,0XFD,0XFB,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFE,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,
0XCB,0XCA,0XDB,0X6D,0X80,0XC7,0X37,0X63,0XCA,0X22,0X5F,0XD4,0X1B,0X61,0XDB,0X19,
0X61,0XDF,0X19,0X5F,0XDD,0X1C,0X58,0XD6,0X27,0X54,0XC7,0X49,0X61,0XB4,0X97,0X9A,
0XBA,0XF3,0XF1,0XF0,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XFD,0XDE,0XDD,0XE2,
0X77,0X80,0XB3,0X33,0X55,0XBB,0X1D,0X53,0XD2,0X18,0X5C,0XE1,0X17,0X63,0XE8,0X17,
0X66,0XE9,0X17,0X66,0XE6,0X1A,0X63,0XDF,0X25,0X5F,0XD2,0X50,0X6E,0XC6,0XB3,0XB6,
0XD3,0XFD,0XFD,0XFB,0XFD,0XFD,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
};

四、编译运行效果

image.png

目录
相关文章
|
1月前
|
NoSQL C语言 索引
十二个C语言新手编程时常犯的错误及解决方式
C语言初学者常遇错误包括语法错误、未初始化变量、数组越界、指针错误、函数声明与定义不匹配、忘记包含头文件、格式化字符串错误、忘记返回值、内存泄漏、逻辑错误、字符串未正确终止及递归无退出条件。解决方法涉及仔细检查代码、初始化变量、确保索引有效、正确使用指针与格式化字符串、包含必要头文件、使用调试工具跟踪逻辑、避免内存泄漏及确保递归有基准情况。利用调试器、编写注释及查阅资料也有助于提高编程效率。避免这些错误可使代码更稳定、高效。
239 12
|
2月前
|
存储 算法 Linux
C语言 多进程编程(一)进程创建
本文详细介绍了Linux系统中的进程管理。首先,文章解释了进程的概念及其特点,强调了进程作为操作系统中独立可调度实体的重要性。文章还深入讲解了Linux下的进程管理,包括如何获取进程ID、进程地址空间、虚拟地址与物理地址的区别,以及进程状态管理和优先级设置等内容。此外,还介绍了常用进程管理命令如`ps`、`top`、`pstree`和`kill`的使用方法。最后,文章讨论了进程的创建、退出和等待机制,并展示了如何通过`fork()`、`exec`家族函数以及`wait()`和`waitpid()`函数来管理和控制进程。此外,还介绍了守护进程的创建方法。
C语言 多进程编程(一)进程创建
|
2月前
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
|
2月前
|
Linux C语言
C语言 多进程编程(四)定时器信号和子进程退出信号
本文详细介绍了Linux系统中的定时器信号及其相关函数。首先,文章解释了`SIGALRM`信号的作用及应用场景,包括计时器、超时重试和定时任务等。接着介绍了`alarm()`函数,展示了如何设置定时器以及其局限性。随后探讨了`setitimer()`函数,比较了它与`alarm()`的不同之处,包括定时器类型、精度和支持的定时器数量等方面。最后,文章讲解了子进程退出时如何利用`SIGCHLD`信号,提供了示例代码展示如何处理子进程退出信号,避免僵尸进程问题。
|
2月前
|
消息中间件 Unix Linux
C语言 多进程编程(五)消息队列
本文介绍了Linux系统中多进程通信之消息队列的使用方法。首先通过`ftok()`函数生成消息队列的唯一ID,然后使用`msgget()`创建消息队列,并通过`msgctl()`进行操作,如删除队列。接着,通过`msgsnd()`函数发送消息到消息队列,使用`msgrcv()`函数从队列中接收消息。文章提供了详细的函数原型、参数说明及示例代码,帮助读者理解和应用消息队列进行进程间通信。
|
2月前
|
缓存 Linux C语言
C语言 多进程编程(六)共享内存
本文介绍了Linux系统下的多进程通信机制——共享内存的使用方法。首先详细讲解了如何通过`shmget()`函数创建共享内存,并提供了示例代码。接着介绍了如何利用`shmctl()`函数删除共享内存。随后,文章解释了共享内存映射的概念及其实现方法,包括使用`shmat()`函数进行映射以及使用`shmdt()`函数解除映射,并给出了相应的示例代码。最后,展示了如何在共享内存中读写数据的具体操作流程。
|
2月前
|
消息中间件 Unix Linux
C语言 多进程编程(二)管道
本文详细介绍了Linux下的进程间通信(IPC),重点讨论了管道通信机制。首先,文章概述了进程间通信的基本概念及重要性,并列举了几种常见的IPC方式。接着深入探讨了管道通信,包括无名管道(匿名管道)和有名管道(命名管道)。无名管道主要用于父子进程间的单向通信,有名管道则可用于任意进程间的通信。文中提供了丰富的示例代码,展示了如何使用`pipe()`和`mkfifo()`函数创建管道,并通过实例演示了如何利用管道进行进程间的消息传递。此外,还分析了管道的特点、优缺点以及如何通过`errno`判断管道是否存在,帮助读者更好地理解和应用管道通信技术。
|
2月前
|
存储 Ubuntu Linux
C语言 多线程编程(1) 初识线程和条件变量
本文档详细介绍了多线程的概念、相关命令及线程的操作方法。首先解释了线程的定义及其与进程的关系,接着对比了线程与进程的区别。随后介绍了如何在 Linux 系统中使用 `pidstat`、`top` 和 `ps` 命令查看线程信息。文档还探讨了多进程和多线程模式各自的优缺点及适用场景,并详细讲解了如何使用 POSIX 线程库创建、退出、等待和取消线程。此外,还介绍了线程分离的概念和方法,并提供了多个示例代码帮助理解。最后,深入探讨了线程间的通讯机制、互斥锁和条件变量的使用,通过具体示例展示了如何实现生产者与消费者的同步模型。
|
2月前
|
Linux C语言
C语言 多进程编程(七)信号量
本文档详细介绍了进程间通信中的信号量机制。首先解释了资源竞争、临界资源和临界区的概念,并重点阐述了信号量如何解决这些问题。信号量作为一种协调共享资源访问的机制,包括互斥和同步两方面。文档还详细描述了无名信号量的初始化、等待、释放及销毁等操作,并提供了相应的 C 语言示例代码。此外,还介绍了如何创建信号量集合、初始化信号量以及信号量的操作方法。最后,通过实际示例展示了信号量在进程互斥和同步中的应用,包括如何使用信号量避免资源竞争,并实现了父子进程间的同步输出。附带的 `sem.h` 和 `sem.c` 文件提供了信号量操作的具体实现。
|
3月前
|
存储 程序员 C语言
揭秘C语言:这些核心知识你掌握了吗?一篇文章带你突破编程基础,开启高效编码之旅!
【8月更文挑战第22天】C语言作为编程基石,以简洁高效著称,历经数十年仍备受欢迎。本文通过梳理C语言的核心概念,帮助读者深入理解并提升技能。适合各水平读者。基础语法从`main`函数开始,如示例中的“Hello, World!”程序所示。C语言强调头文件包含与语句结尾的分号。变量和数据类型丰富多样,如`int`、`float`、`char`等,合理选择可优化内存使用和性能。指针用于间接访问内存,是C语言的关键特性。控制结构如循环和分支使程序逻辑更灵活。函数支持代码复用与模块化。深入学习还需掌握预处理指令、文件操作等高级特性。通过系统学习与实践,你将能更熟练地使用C语言,构建高效稳定的应用。
61 4