各种字符编码及串结构
⾸先不好意思在⾸页占块地⽅了
字符编码和串结构不是⼀回事,很多⼈连这个都不理解就问BSTR和ASCII ANSI UNICODE是怎么回事。
字符编码我理解的就是⼀套将字符集对应为数字的对应表。⽐如在ascii编码表中的97就是⼩写字母a,98是b,65是A,66是B,63是?号,64是@符号。
常⽤的字符编码有以下⼏种:
1) ASCII编码,7个⼆进制位表⽰(单字节),对应了127个字符。
2) ASC2编码,8个⼆进制位表⽰(单字节),对应了256个字符,前128个字符同ascii编码,扩充了⼀些控制符号。
3) ANSI编码,8个⼆进制位表⽰(单字节),对应了256个字符,前128个字符也同ascii编码,同样扩充了⼀批控制符号,不过符号的位置和ASCII2略有不同。
4) UNICODE编码,16个⼆进制位表⽰(双字节),对应65535个字符,范围很⼤,可以表⽰东⽅语⾔,⽐如汉字,⽇语,阿拉伯语等等。
再简单说下那个串结构,串结构太多了,尤其是在c++中的串结构相当繁琐,也是许多c++⼊门者却步的原因之⼀,因为c++的串种类太多了,简单列举⼏个
1) char* 可以表⽰ascii串,以0作为串结尾标识和strlen() strcmp()等函数配套使⽤
2) wchar* 表⽰双字节串,以00做为串结尾标识,和wstrlen() wstrcmp()等函数配套使⽤
3) TCHAR* ⾃适应UNICODE环境的TCHAR*,这个只是⼀个宏,Win32为其定义了LPTCHAR等
4) STL::string 是标准模板库的串结构,是unicode串,具体⽤前导长度的⽅式还是后缀结束符的⽅式表⽰⼀个串不知道,是⼀个类,使⽤⾮常⽅便
5) CString 是MFC⾥的串结构,也是unicode串
6) BSTR 是COM组件中使⽤的串结构,在调⽤COM组件时传递串参数都应该转换⼀下,前导数字的形式表⽰串长度字符串是什么数据结构
还有VB的String是以前导串长度的形式表⽰串结构等等。
以后再有遇到的字符编码和串结构就记录在这⾥好了也欢迎看到此⽂的朋友以留⾔⽅式补充勘误,我会及时添加或修正。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论