C语言中数组怎么把任意两个单字节的字符变成一个双字节的字符

 我来答
冷酷船长
2018-03-27 · TA获得超过252个赞
知道小有建树答主
回答量:310
采纳率:65%
帮助的人:121万
展开全部
// 题主这个问题嘛,问的很有问题

// 计算机一般有两种文字储存方式,宽字节+多字节

// 宽字节:用2或4个字节表示一个字(每种类型固定字节长度)

// USC-2, USC-4

// 多字节:用1到4个字节表示一个字(每种字用的字节不一样)

// GBK, BIG5, UTF-8

两个单字节变为一个双字节,意味着这两个单字节其实是一个双字节能表达的字符的分别字节?

// 假设是这样的

/* 以GBK为例子,嗯,微软默认控制台内码为GBK */

比如“我”字,你得先查到内码为:CED2

从下面可以查....当然百度一下到处都是
http://www.mytju.com/classcode/tools/encode_gb2312.asp

// 然后发现,这个是多字节编码,所以不考虑大小端

unsigned char a[3];

a[0] = 0xCE; a[1] = 0xD2; a[3] = 0x0;

printf(a); 就可以了

/* 以USC-2为例子 */

查到“我”编码是0x6211

考虑到intel处理器都是小端(与我大摩托罗拉对着干)

unsigned char a[4];

a[0] = 0x11; a[1] = 0x62; a[2] = 0x0; a[3] = 0x0;

wprintf((wchar_t *)a); 就可以了
追问
我想问的是  a【3】={'a','a','a'} 怎么变成  a【3】={‘啊’,‘a’}
追答
// 那么两个“a”字节的字符变成一个“啊”

// 对不起,献丑了,臣妾做不到

// "啊" GBK 对于 B0A1
// "a"  GBK 对于 61

// 如果有份数据是 B0A16100 即可

// 楼主先复习下编码规则吧,我下面有个以前的回答,希望能帮你

网页链接

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式