C++ 自然语言编码详解系列二(字符(串)的内存表示)

字符在内存中是怎样存储的

  单字节字符串:每个字符占一个字节按顺序依次存储,最后以单字节表示的0结束。例如。"Bob"的存贮形式如下:

42 6F 62 00
B o b BOS

Unicode的存储形式,L"Bob"

42 00 6F 00 62 00 00 00
B o b BOS

使用两个字节表示的0x0000来做结束标志。

  一眼看上去,DBCS 字符串很像 SBCS 字符串,但是我们一会儿将看到 DBCS 字符串的微妙之处,它使得使用字符串操作函数和永字符指针遍历一个字符串时会产生预料之外的结果。字符串"日本语 " ("nihongo")在内存中的存储形式如下(LB和TB分别用来表示 leading byte 和 trail byte)

93 FA 96 7B 8C EA 00
LB TB LB TB LB TB EOS
EOS

值得注意的是,"ni"的值不能被解释成WORD型值0xfa93,而应该看作两个值93和fa以这种顺序被作为"ni"的编码。(So on a big-endian CPU, the bytes would still be in the order shown above.)

 

你可能感兴趣的:(C++,c,存储,语言,byte)