C++_字符串字节码

1.字符串:

类型wchar_t,size 4bytes;【搭配L】,L"汉字",字符串中,\0占4个字节(一般C++中应用);

类型char,size 1bytes;utf-8中文占3个字节;"汉字",字符串中,\0占1个字节;

gb2312占两个字节;

UTF-8:

linux默认使用的编码,类型char,单位字节为1字节,无大小端问题,适合网络传输;

但是对于汉字,至少需要3个字节来表示(linux,一般C中应用);网络传输浪费带宽,并且不易用下标表示汉字。

UTF-16:

window默认使用的Unicode(统一码、万国码、单一码),类型wchar_t,单位字节2字节,基本可以表示常见的汉字。

linux默认wchar_t,单位字节4字节,可以表示所有汉字。

PS:

char *类型的字面值,最终内存使用何种编码方式完全取决于当前文件的编码方式。

文件是GBK编码,文件中 char * str = "汉字",str 指向的内存字符串,二进制使用GBK编码。

文件是UTF-8编码,文件中 char * str = "汉字",str指向的内存字符串,二进制使用UTF-8编码。

所以,字符串应该放在资源文件里,而不是硬编码在.h/.cpp文件里。

EXA:

Unicode定义,“汉字”对应的数字是 0x6c49和0x5b57,而编码的程序数据是【小端存储(低字节靠前)】:

BYTE data_utf8[] = {0xE6, 0xB1, 0x89, 0xE5, 0xAD, 0x97}; // UTF-8编码
           WORD data_utf16[] = {0x6c49, 0x5b57}; // UTF-16编码
           DWORD data_utf32[] = {0x6c49, 0x5b57}; // UTF-32编码 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值