c语言怎么查找中文字符,C语言自学,汉字编码范围查询!
本帖最后由 life_fox 于 2017-9-29 00:57 編輯
漢字編碼、單字節二進制查詢源碼
#include
#include
#include
#include
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;
}
總結
以上是生活随笔為你收集整理的c语言怎么查找中文字符,C语言自学,汉字编码范围查询!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php写dnf脚本,dnf分解机脚本c
- 下一篇: scrollTop以及页面回到顶部