vc 常見編碼規範及其應用

2021-08-31 13:39:04 字數 1653 閱讀 6242

對於眾多的編碼規範一直沒有乙個清晰的認識,本文旨在理清這些編碼規範的定義和特點。

ascii全稱是美國國家資訊交換標準碼,它是用於字元轉換的乙個標準,長度是7位,可以標記128個不同的字元,但是這個標準極其有限,比如說它就無法支援中文的編碼,甚至連其他英語國家的需求也無法滿足,比如說英國的英鎊符號。

ansi是美國的一家非營利制定國家標準的機構,ansi也被稱為微軟的擴充套件字符集,8位表示,所以它也被稱為擴充套件ascii,可以填充256個字元,這套標準最終成為ansi/iso 8859-1–1987。

各國根據這套標準弄出了自己的編碼表,比如著名的gb2312等,它們都統稱為ansi編碼集,也叫mbcs(multi-byte character system),這些編碼表都是8位,小於128的字元都跟ascii編碼表一樣,大於128的字元後面會再跟著乙個位元組,稱作leading byte,系統判斷它是否大於128,如果大於128,就知道它後面還有乙個位元組,通過這樣的編碼方式就可以將中文等語言編碼進去,但是這樣的編碼集太多了,在不同國家需要設定不同的編碼集,不利於程式的傳播,因此需求乙個更加有效的統一標準解決這個問題,unicode就應運而生了。

unicode是16位的,它可以表示的字元數是65535個,因此它涵蓋了幾乎所有的字元和象形文本,另外還可以包括一些符號等字元。unicode佔16位,因此它也叫utf-16,後來為了在單位元組的系統上順利使用,出現了uft-8,它的編碼方式跟mbcs差不多。

即ansi/iso 9899-1990,它是美國國家標準機構為c語言專門制定的標準。

ansi c專門為c指定標準,它定義了乙個寬字元的概念,使ansi c標準支援多種用多個位元組來表示乙個字元的字符集。

c語言中的寬字元是基於wchar_t的。寬字元並不等於unicode,unicode只是寬字元的一種表現形式,不過在windows程式中幫助理解,可以認為寬字元就是unicode。

wchar_t *p = l"hello";
在c語言當中,對於字元的操作函式幾乎都有兩個版本,比如printf(),對應寬字元版函式是wprintf(),這個函式在傳入字串時需要在前面加上l""。

如果有個需求:乙份**編譯成ascii和unicode兩個版本,如果程式本身大量使用寬字元,可以想象,要編譯成ascii版本,不僅要改編譯選項還要修改每個函式,每個字串,這樣的工程量是巨大的,在vc++中,有乙個tchar.h檔案,它並不是ansi c的一部分,但是它裡面的函式解決了這個問題,比如說使用它的_tcslen函式時,在寬字元下它就代表著wcslen,在多位元組編碼下它就代表strlen,這就解決了函式的適配問題,使用 text(「***」)時,在寬字元下它就代表l"***",在多位元組下就代表"***",這就解決了變數的適配問題。

使用windows sdk的程式推薦使用特定的型別用來替代c語言中的型別。

c語言的型別

windows型別

wchar_t

wchar

char

char

自適應tchar……

還有常見的如lptstr,l是指」long「的意思,p是指標。

windows複製了一部分c執行庫函式,windows的函式有很多,例如字串處理函式,這些windows函式都是寬字元和多位元組自適應的:

常見編碼規範

常見編碼規範1.明確方法功能,精確 而不是近似 地實現方法設計。如果乙個功能將在多處實現,即使只有兩行 也應該編寫方法實現。說明 雖然為僅用一兩行就可完成的功能去編方法好象沒有必要,但用方法可使功能明確化,增加程式可讀性,亦可方便維護 測試。2.應明確規定對介面方法引數的合法性檢查應由方法的呼叫者負...

常見編碼及轉換

1 bcd碼 1 壓縮bcd 4位二進位制數表示乙個十進位制數,例如 0001 0010 12 0001 0011 13 2 bcd 8位二進位制數表示乙個十進位制數,高四位為0 0000 0001 0000 0010 12 0000 0001 0000 0011 13 一般地,壓縮bcd碼比較常用...

Android專案及編碼的規範

在開發中,遵循良好的編碼規範,不僅僅可以提高 的可讀性,減小出錯的可能性,同時也降低與其他開發者交流的成本,易於他人的維護與協作。本文簡單總結了android開發中的一些 規範,供開發者參考。除了注釋,中不出現中文 每個類寫上必要的注釋,類的說明,作者,方法加上必要的注釋說明,方便以後維護 1 ba...