日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

C深入理解編程中的字符編碼 c語言中字符串的各種指令( 二 )


UCS-2用2字節(jié)編碼 , UCS-4用4字節(jié)編碼(0x0-0xffffffff)(理論上2 ^ 32 = 4294967296) 。
unicode本身只指定對應的二進制數(shù)(也是序列號) 。因為需要更多的比特 , 所以發(fā)現(xiàn)有些預編碼的序列號只需要一個字節(jié)或者兩個字節(jié) 。如果同樣使用四個字節(jié) , 會造成空之間的浪費 , 所以可以考慮另一種經濟的存儲方案 。所以在unicode統(tǒng)一數(shù)字編碼的基礎上 , 開發(fā)了一套存儲的編碼方案 , 就是utf , 在空之間 , 或者空之間交換時間 , 或者折中 , 對應utf-8 , utf-32 , utf-16 , 因為存儲的是另一套編碼體系 , 需要重新轉換 。轉換格式為:
utf-8
不同的編碼段用不同的字節(jié)數(shù)(1-6)存儲 , 一位用0交換 , 兩位段從110和10開始 , 三位段從1110和10 , 10開始 , 四位段從11110和10 , 10 , 10開始 。這樣編碼在存儲前面的字符時就節(jié)省了空 , 是用時間換取空的折中方案 。

C深入理解編程中的字符編碼 c語言中字符串的各種指令


utf-16
兩個字節(jié)或四個字節(jié)用于存儲 , 分為兩段 。第一段不經轉換直接存儲 , 使用兩個字節(jié) 。如果屬于第二段(高段) , 第一個和第二個字節(jié)以110110開頭 , 第三個和第四個字節(jié)以110111開頭 , 其余用unicode編碼依次填充 。
C深入理解編程中的字符編碼 c語言中字符串的各種指令


utf-32:固定長度 , 4個字節(jié)存儲 , 用空改變時間(因為不需要轉換) 。
4 C 使用的字符串在C中 , char用來表示單字節(jié)字符 , wchar_t用來表示寬字符 , 這為國際代碼提供了一些支持 。Char * strings由特殊的封裝類std::string處理 , 標準的iostream是std::cin和std::cout 。對于wchar_t * string , 封裝類是std::wstring , 標準iostream是wcin和wcout 。雖然指定了寬字符 , 但是不清楚寬字符占用多少字節(jié) 。Windows系統(tǒng)中的寬字符是兩個字節(jié) , 是UTF-16; 。在Unix/Linux系統(tǒng)中 , 為了更全面的國際編碼支持 , 其寬字符為四個字節(jié) , 即UTF-32編碼 。這給程序的跨平臺帶來了一些困惑 。除了Windows程序開發(fā)中常用wchar_t* string表示UTF-16 , 其他情況下很少使用wchar_t* 。MFC通常用自己的TCHAR和CString類支持國際化 。未定義_UNICODE宏時 , TCHAR = char , 定義_UNICODE宏時 , TCHAR = wchar_t , CString內部類似 。Qt使用QChar和QString類(內部常量為UTF-16) , 一般圖形開發(fā)庫使用自己的字符串類庫 。在新標準C 11中 , 明確定義了對國際代碼的支持:
char *對應UTF-8編碼字符串(代碼表示為u8 & # 34多種語言& # 34;) , 封裝類是STD::string;;
添加char16_t *對應UTF-16編碼字符串(代碼表示為u & # 34多種語言& # 34;) , 封裝類為STD::u 16 string;
添加char32_t *對應UTF-32編碼字符串(代碼表示為U & # 34多種語言& # 34;) , 封裝類是std::u32string 。
因為Qt有打包的QString , 所以不太需要這些新的字符串格式 。
-End-
,

推薦閱讀