电子书笔记(一)

时间:2022-10-11 17:45:43

字符编码:

utf-16(be):头部-->FE FF (00 41 4E 2D)   2个字节表示一个字符 顺序表示 (00 41)表示'A' 'A’的ASCII码为41

uft-16(le): 头部-->FF FE (41 00 2D 4E)   2个字节表示一个字符 反序表示    (41 00) 表示'A'

utf-8 : 头部-->  EF BB BF (41 E4 B8 AD) -->展开 0100 0001 ,1110 0100 ,1011 1000,1010 1101

0100 0001:第一位为0,用一个字节表示'A',1110 0100,前面3位为1,'中'用3字节表示,取3字节的低4,6,6位得到2字节,即0100 + 11 1000 + 10 1101 -->  0100 1110,0010 1101

转化为16进制,即4E 2D,它采用的是Unicode编码方式。

ANSI: 无头部 41 D6 D0

 

命令行参数的输入:

iError = getopt(argc, argv, "ls:f:h:d:")) != -1

获得正确的输入,'l'后面没有':',就是说输入 -l 就可以了,后面不接参数。

’s' 'f' 'h' 'd' 后面都有':',说明后面跟了参数。

switch(iError)
        {
            case 'l':
            {
                  bList = 1;
                  break;
            }
            case 's':
            {
                  dwFontSize = strtoul(optarg, NULL, 0);
                  break;
            }
            case 'f':
            {
                  strncpy(acFreetypeFile, optarg, 128);
                  acFreetypeFile[127] = '\0';
                  break;
            }            
            case 'h':
            {
                    strncpy(acHzkFile, optarg, 128);
                    acHzkFile[127] = '\0';
                    break;
            }
            case 'd':
            {
                strncpy(acDisplay, optarg, 128);
                acDisplay[127] = '\0';
                break;
            }
            default:
            {
                    printf("Usage: %s [-s Size] [-d display] [-f font_file] [-h HZK] <text_file>\n", argv[0]);
                    printf("Usage: %s -l\n", argv[0]);
                    return -1;
                    break;
            }

 optarg就是解析得到的参数,strtoul函数可以用于将字符串转化为整数;而最后一个未解析的<text_file>就放在argv[optind]里面。