MsgBox ("C") C MsgBox (Hex(AscB(MidB("C", 1, 1)))) 43 MsgBox (Hex(AscB(MidB("C", 2, 1)))) 0 MsgBox (LenB(StrConv("C", vbUnicode))) 4 MsgBox (Hex(AscB(MidB(StrConv("C", vbUnicode), 1, 1)))) 43 MsgBox (Hex(AscB(MidB(StrConv("C", vbUnicode), 2, 1)))) 0 MsgBox (Hex(AscB(MidB(StrConv("C", vbUnicode), 3, 1)))) 0 MsgBox (Hex(AscB(MidB(StrConv("C", vbUnicode), 4, 1)))) 0 MsgBox (LenB(StrConv("C", vbFromUnicode))) 1 MsgBox (Hex(AscB(MidB(StrConv("C", vbFromUnicode), 1, 1)))) 43
每行最后是输出。
(1)默认是Unicode编码,字符C的内存编码是0x43 0x00,
(2)使用StrConv("C", vbUnicode)转换后,根据系统的缺省码页将字符串转成 Unicode,
所以结果变成了0x43 0x00,0x00 0x00,也就是
0x43一个字节当成了一个字符,转成unicode,所以是0x43 0xx,变成了两个字节。
(3)使用StrConv("C", vbFromUnicode)转换后,将字符串由 Unicode 转成系统的缺省码页
0x43 0x00,转成0x43,变成一个字节了。
当然如果字符是中文,结果还是两个字节的~~
|