电子书笔记(一)
字符编码:
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]里面。