字元編碼: 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-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]裡面。