简单提一下,国标-2312中“区号”的范围为“0xB0-0xF7”,“位号”的表示范围为“0xA1-0xFE”,这里只给出代码,没有给出国标码的具体原理,想了解的话可以参考下面的视频,里面对16进制来表示区位码的讲解还是比较详细的。
【非常详细的字符编码讲解,ASCII、GB2312、GBK、Unicode、UTF-8等知识点都有】
以下是用具体的代码,在主函数中调用就可以运行了。
void print_all()
{
int count = 0;
for (int i = 0xB0;i <=0xF7; i++)//区号
{
for (int j = 0xA1; j <= 0xFE; j++)
{
if(count%50==0)//换行
printf("\n%c%c ", i, j);
else
{
printf("%c%c ", i, j);//以字符形式输出才可以得到字符
}
count++;
}
}
printf("\n汉字总数为:%d", count);
}
图片是我的运行结果,可以看到汉字总数为6768。
顺带提一下,python中可以用encode来查看16进制数,代码很简单,只有一行。
print('奕'.encode('gb2312'))
运行结果中可以看到表示区位码的十六进制数。