全角转半角问题(急)

cocat 2011-05-25 08:50:54
在网上找了个代码,不知道有什么错误没,顺便能讲下原理最好~

void DBCToSBC(char *srcStr, char *str)
{
int ilen;
int i = 0, j = 0;
unsigned char ch1, ch2;

ilen = strlen(srcStr);

if ((ilen >= 128) || str == NULL)
{
return ;
}

for (i = 0; i < ilen; i++)
{
ch1 = srcStr[i];
ch2 = srcStr[i+1];

//全角英文
if(ch1 == 0xA3) //这里为什么是0xA3??
{
str[j++] = ch2 - 0x80;
i++;
continue;
}
//全角空格
else if((ch1 == 0xA1) && (ch2 == 0xA1)) // ??
{
str[j++] = 0x20;
i++;
continue;
}
//全角汉字
else if ((ch1 >= 0x81) && (ch1 <= 0xFE) && (ch2 >= 0x40) && (ch2 <= 0xFE)) //??
{
str[j++] = ch1;
str[j++] = ch2;
i++;
continue;
}

str[j++] = ch1;
}
str[j] = '\0';

return ;
}

...全文
201 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocat 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 luciferisnotsatan 的回复:]

引用 5 楼 hiroyukki 的回复:

全角的这些个字符是有编码的,你去查下GBX系列的码表就明白了,说白了就是个硬编码。

从代码看,像是GB2312编码
[/Quote]

晕了~都没见过
luciferisnotsatan 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hiroyukki 的回复:]

全角的这些个字符是有编码的,你去查下GBX系列的码表就明白了,说白了就是个硬编码。
[/Quote]
从代码看,像是GB2312编码
serven_zhang 2011-05-26
  • 打赏
  • 举报
回复
这些是全角的字符编码啊,你去查一下手册看看啊!
贪食蛇男 2011-05-26
  • 打赏
  • 举报
回复
全角的这些个字符是有编码的,你去查下GBX系列的码表就明白了,说白了就是个硬编码。
  • 打赏
  • 举报
回复
去看看全角所占的字节数,你就明白了

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧