C语言 字符全角、半角转换

来源:互联网 发布:流量龙卷风淘宝 编辑:程序博客网 时间:2024/06/05 10:35
1.全角是一种电脑字符,且每个全角字符占用两个标准字符(或半角字符)位置。

每个普通字符(或半角字符)只占用一字节的空间(一字节有8位,共256个编码空间),而汉语、日语、及朝鲜文等象形字语言的字库量远大于256个,所以改用两个字节来储存。同时,也是因为中日韩等象形文字的书写习惯,如果统一使用全角字符的话,排列起来也显得整齐。

为了排列整齐,英文和其它拉丁文的字符和标点也提供了全角格式。

汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符。

通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。在系统内部,以上三种字符是作为基本代码处理的,所以用户输入命令和参数时一般都使用半角。   全角占两个字节,半角占一个字节。半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节,而不管是半角还是全角,汉字都还是要占两个字节。

在编程序的源代码中只能使用半角标点(不包括字符串内部的数据)

在不支持汉字等语言的计算机上只能使用半角标点(其实这种情况根本就不存在半角全角的概念)

对于大多数字体来说,全角看起来比半角大,当然这不是本质区别

[全角举例]AabB1234@#$%^&*;,。:

[半角举例]AabB1234@#$%^&*;,.: 


2.实际中,半角英文字符、标点符号等,转换为全角的过程是:将在单字节高8位设置为 0xA3 (即163),将低字节设置为该单字节字符 + 0x80(即128)----将其变为一个首位为1的8位字节,将其变为俩个个字节(即全角)。


C语言实现 字符的全角、半角转换:

 

 

int fullToHalf(char *sFullStr, char *sHalfStr)

{

    int iFullStrIndex = 0;

    int iHalfStrIndex = 0;

    

    int iFullStrLen = strlen(sFullStr);

    

    printf("sFullStr[%s]\n", sFullStr);

    

    for(; iFullStrIndex < iFullStrLen; iFullStrIndex++, iHalfStrIndex++){

        

        if(sFullStr[iFullStrIndex] == 0xA3){

            sHalfStr[iHalfStrIndex] = sFullStr[++iFullStrIndex]- 0x80;

            

        }else{

            sHalfStr[iHalfStrIndex] = sFullStr[iFullStrIndex];

            

        }

        

    }

    

    printf("sHalfStr:[%s]\n", sHalfStr);

    

    return 0;

}


 

int halfToFull(char *sFullStr, char *sHalfStr)

{

    int iFullStrIndex = 0;

    int iHalfStrIndex = 0;

    

    int iHalfStrlen = strlen(sHalfStr);

    

    printf("sHalfStr[%s]\n", sHalfStr);

    

    for(; iHalfStrIndex < iHalfStrlen; iHalfStrIndex++, iFullStrIndex++){

        

        if(sHalfStr[iHalfStrIndex] < 0x80){

            sFullStr[iFullStrIndex] = 0xA3;

            sFullStr[++iFullStrIndex] = sHalfStr[iHalfStrIndex] + 0x80;

            

        }else{

            sFullStr[iFullStrIndex] = sHalfStr[iHalfStrIndex];

            

        }

        

    }

    

    printf("sFullStr:[%s]\n", sFullStr);

    

    return 0;

}


0 0
原创粉丝点击