//你知道汉字字符串在内存中的怎么存的吗?
#define UNICODE
#define _UNICODE
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <tchar.h>
#include <locale.h>
#pragma comment(lib,"user32.lib")
int main()
{
_tsetlocale(LC_CTYPE, TEXT("CHS") );//让_tprintf()支持中文
TCHAR *zz=L"a▓b鑯cd咢e真f三g国h无i双j!";
char *z="a▓b鑯cd咢e真f三g国h无i双j!";
for(unsigned int i=0;i<strlen(z);++i)
{
wprintf(L"[%d]%x: %c\n",i ,(unsigned char)z[i], (unsigned char)z[i] );
}
wprintf(L"----------\n");
for(unsigned int i=0;i<lstrlen(zz);++i)
{
wprintf(L"[%d]:0x%04x %c\n",i ,zz[i], zz[i] );
}
wprintf(L"----------\n");
for(int i=0;i<=lstrlen(zz);++i)
{
wprintf(L"[%d] L:0x%02x H:0x%02x -->0x%04x=%c\n",i,zz[i] & 0x00FF, ( zz[i]>>8 ) & 0x00FF, zz[i], zz[i] );
}
wprintf(L"%s\n=================\n", zz );
return 0;
}
[1]a8: ¨
[2]88: ?
[3]62: b
[4]e8: è
[5]7e: ~
[6]63: c
[7]fe: t
[8]a0: ?
[9]64: d
[10]86: ?
[11]40: @
[12]65: e
[13]d5: ?
[14]e6: ?
[15]66: f
[16]c8: è
[17]fd: y
[18]67: g
[19]b9: 1
[20]fa: ú
[21]68: h
[22]ce: ?
[23]de: T
[24]69: i
[25]cb: ?
[26]ab: ?
[27]6a: j
[28]21: !
----------
[0]:0x0061 a
[1]:0x2593 ▓
[2]:0x0062 b
[3]:0x946f 鑯
[4]:0x0063 c
[5]:0xe864
[6]:0x0064 d
[7]:0x54a2 咢
[8]:0x0065 e
[9]:0x771f 真
[10]:0x0066 f
[11]:0x4e09 三
[12]:0x0067 g
[13]:0x56fd 国
[14]:0x0068 h
[15]:0x65e0 无
[16]:0x0069 i
[17]:0x53cc 双
[18]:0x006a j
[19]:0x0021 !
----------
[0] L:0x61 H:0x00 -->0x0061=a
[1] L:0x93 H:0x25 -->0x2593=▓
[2] L:0x62 H:0x00 -->0x0062=b
[3] L:0x6f H:0x94 -->0x946f=鑯
[4] L:0x63 H:0x00 -->0x0063=c
[5] L:0x64 H:0xe8 -->0xe864=
[6] L:0x64 H:0x00 -->0x0064=d
[7] L:0xa2 H:0x54 -->0x54a2=咢
[8] L:0x65 H:0x00 -->0x0065=e
[9] L:0x1f H:0x77 -->0x771f=真
[10] L:0x66 H:0x00 -->0x0066=f
[11] L:0x09 H:0x4e -->0x4e09=三
[12] L:0x67 H:0x00 -->0x0067=g
[13] L:0xfd H:0x56 -->0x56fd=国
[14] L:0x68 H:0x00 -->0x0068=h
[15] L:0xe0 H:0x65 -->0x65e0=无
[16] L:0x69 H:0x00 -->0x0069=i
[17] L:0xcc H:0x53 -->0x53cc=双
[18] L:0x6a H:0x00 -->0x006a=j
[19] L:0x21 H:0x00 -->0x0021=!
[20] L:0x00 H:0x00 -->0x0000=
#define UNICODE
#define _UNICODE
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <tchar.h>
#include <locale.h>
#pragma comment(lib,"user32.lib")
int main()
{
_tsetlocale(LC_CTYPE, TEXT("CHS") );//让_tprintf()支持中文
TCHAR *zz=L"a▓b鑯cd咢e真f三g国h无i双j!";
char *z="a▓b鑯cd咢e真f三g国h无i双j!";
for(unsigned int i=0;i<strlen(z);++i)
{
wprintf(L"[%d]%x: %c\n",i ,(unsigned char)z[i], (unsigned char)z[i] );
}
wprintf(L"----------\n");
for(unsigned int i=0;i<lstrlen(zz);++i)
{
wprintf(L"[%d]:0x%04x %c\n",i ,zz[i], zz[i] );
}
wprintf(L"----------\n");
for(int i=0;i<=lstrlen(zz);++i)
{
wprintf(L"[%d] L:0x%02x H:0x%02x -->0x%04x=%c\n",i,zz[i] & 0x00FF, ( zz[i]>>8 ) & 0x00FF, zz[i], zz[i] );
}
wprintf(L"%s\n=================\n", zz );
return 0;
}
输出
[1]a8: ¨
[2]88: ?
[3]62: b
[4]e8: è
[5]7e: ~
[6]63: c
[7]fe: t
[8]a0: ?
[9]64: d
[10]86: ?
[11]40: @
[12]65: e
[13]d5: ?
[14]e6: ?
[15]66: f
[16]c8: è
[17]fd: y
[18]67: g
[19]b9: 1
[20]fa: ú
[21]68: h
[22]ce: ?
[23]de: T
[24]69: i
[25]cb: ?
[26]ab: ?
[27]6a: j
[28]21: !
----------
[0]:0x0061 a
[1]:0x2593 ▓
[2]:0x0062 b
[3]:0x946f 鑯
[4]:0x0063 c
[5]:0xe864
[6]:0x0064 d
[7]:0x54a2 咢
[8]:0x0065 e
[9]:0x771f 真
[10]:0x0066 f
[11]:0x4e09 三
[12]:0x0067 g
[13]:0x56fd 国
[14]:0x0068 h
[15]:0x65e0 无
[16]:0x0069 i
[17]:0x53cc 双
[18]:0x006a j
[19]:0x0021 !
----------
[0] L:0x61 H:0x00 -->0x0061=a
[1] L:0x93 H:0x25 -->0x2593=▓
[2] L:0x62 H:0x00 -->0x0062=b
[3] L:0x6f H:0x94 -->0x946f=鑯
[4] L:0x63 H:0x00 -->0x0063=c
[5] L:0x64 H:0xe8 -->0xe864=
[6] L:0x64 H:0x00 -->0x0064=d
[7] L:0xa2 H:0x54 -->0x54a2=咢
[8] L:0x65 H:0x00 -->0x0065=e
[9] L:0x1f H:0x77 -->0x771f=真
[10] L:0x66 H:0x00 -->0x0066=f
[11] L:0x09 H:0x4e -->0x4e09=三
[12] L:0x67 H:0x00 -->0x0067=g
[13] L:0xfd H:0x56 -->0x56fd=国
[14] L:0x68 H:0x00 -->0x0068=h
[15] L:0xe0 H:0x65 -->0x65e0=无
[16] L:0x69 H:0x00 -->0x0069=i
[17] L:0xcc H:0x53 -->0x53cc=双
[18] L:0x6a H:0x00 -->0x006a=j
[19] L:0x21 H:0x00 -->0x0021=!
[20] L:0x00 H:0x00 -->0x0000=