关于汉字的编程

//你知道汉字字符串在内存中的怎么存的吗?


#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鑯cd咢e真f三g国h无i双j!";
char *z="a▓b鑯cd咢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;
}



输出


[0]61:   a
[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=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值