吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4158|回复: 2
收起左侧

[C&C++ 原创] C语言自学,汉字编码范围查询!

[复制链接]
life_fox 发表于 2017-9-29 00:00
本帖最后由 life_fox 于 2017-9-29 00:57 编辑

汉字编码、单字节二进制查询源码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>

int main()
{
        
        system("title 汉字编码、单字节二进制查询");
        unsigned char ch[3]={0};
        unsigned ch_2[6768][3]={0};
        int ch_int[6768][2]={0};
        
        int x,y;
        int a=0;
        
        //基本常见汉字范围:0xB0A1(45217) - 0xF7FE(63486)
        /*
                45217是高8位和低8位二进制整合后转换的十进制
                45217的二进制: 1011 0000 1010 0001
                        高八位:1011 0000        十进制: 176
                        低八位:1010 0001        十进制: 161
               
               
                63486的二进制: 1111 0111 1111 1110
                        高八位:1111 0111        十进制: 247
                        低八位:1111 1110        十进制: 254
        
        
        基本常用全角符号编码范围:0xA1A1(41377) - 0xFEFE(65278)
                这个范围是包含了汉字、中文标点符号、日文、俄文、部首、序号、注音、拼音等等
                就是手机输入法中,单击符号,所列出来的那些

       还有一个范围是0x8180(33152)-0xFEFE(65278)       这个范围是包含了繁体字和一些非常见汉字  (   高8位248之后,低8位基本不超过160   )
        */
        


        for(x=176;x<=247;x++)//高8位编码最低是176最高247
        {
                for(y=161;y<=254;y++)//低8位编码最低是161最高254,字节集[176,161]---[247,254]这是汉字编码范围
                {
                        a++;
                        ch[0]=x;        //高8位编码
                        ch[1]=y;        //低8位编码
                        
                        
                        strcpy(ch_2[a-1],ch);        //将2字节组赋值给集合用于保存
                        ch_int[a-1][0]=x;                //将 高8位编码 保存
                        ch_int[a-1][1]=y;                //将 低8位编码 保存
                }
        }
        
        
        loop:system("cls");
        printf("请输入需要查询的汉字:");
         
        /*
        scanf("%s",&ch);
        本人的是不完整XP系统,无法输入中文,故无法测试
        */
        
        
        strcpy(ch,"陈");
         
        char ch_g8[8],ch_d8[8],ch_jihe[8]={0};
        for(x=0;x<6674;x++)
        {
                if((strcmp(ch,ch_2[x]))==0)
                {
                        printf("查询的汉字  :%s\n",ch_2[x]);
                        printf("高八位编码  :%-11d低八位编码:%d\n",ch_int[x][0],ch_int[x][1]);
                        
                        
                        itoa(ch_int[x][0],ch_g8,2);
                        printf("高八位二进制:%s   ",ch_g8);//将高8位转换为二进制
                        itoa(ch_int[x][1],ch_d8,2);
                        printf("低八位二进制:%s\n",ch_d8);//将低8位转换为二进制
                        
                        //将2个字节的二进制整合
                        char chuan[16]={0};
                        strcat(chuan,itoa(ch_int[x][0],ch_g8,2));
                        strcat(chuan,itoa(ch_int[x][1],ch_d8,2));
                        
                        
                        //整合后的二进制转换成十进制
                        int i=0,b[16];
                        for(y=0;y<16;y++)//将0、1字符转换成0、1整型
                        {
                                if(chuan[y]=='1')b[y]=1;
                                else if(chuan[y]=='0')b[y]=0;        
                        }
                        
                        for(y=0;y<16;y++)//将转换后的整型二进制转换成十进制
                        {
                                i=i+(b[15-y]*pow(2,y));        
                        }
                        printf("字节集 编 码:%d\n",i);
                        printf("字节集二进制:%s\n",chuan);
                }
        }
        
        
        printf("是否继续?Y/N:");
        char c;
        scanf("%s",&c);
        if(c=='y' || c=='Y')goto loop;
        else return 0;
        
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

无影寒冬 发表于 2017-9-29 12:29
我用VC++6.0和DEV-C++编译出错
 楼主| life_fox 发表于 2017-9-29 20:46
无影寒冬 发表于 2017-9-29 12:29
我用VC++6.0和DEV-C++编译出错

我没试过,我一直用的都是C-Free,你可以看下错误信息,对照代码进行修改
 楼主| life_fox 发表于 2017-9-29 20:52
本帖最后由 life_fox 于 2017-9-29 20:53 编辑
无影寒冬 发表于 2017-9-29 12:29
我用VC++6.0和DEV-C++编译出错

建议你不要在用VC系列的了,太老,很多东西它没办法支持,建议:vs系列(太大,懒得等),c-free(原始支持c89,可以更改成c99或者换编译器),code:blocks(要自行安装编译器),notepad++(自行安装编译器和连接器),我自己收集的IDE:https://pan.baidu.com/s/1nvTZMFf{:1_912:}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 04:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表