
C语言中数组怎么把任意两个单字节的字符变成一个双字节的字符
1个回答
展开全部
// 题主这个问题嘛,问的很有问题
// 计算机一般有两种文字储存方式,宽字节+多字节
// 宽字节:用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 即可
// 楼主先复习下编码规则吧,我下面有个以前的回答,希望能帮你
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询