前阵子做一个项目的电话簿按照首笔画快速查询,先咨询了输入法的兄弟,说没有这样的接口(输入一个汉字,获取首笔画的编码。后来又说有这个接口,只是一直没有遇到这样的需求)。反正不管了,我就自己在网上找了一个比较全的汉字编码集合,并按照我自己的需求,用VC写了一个小程序,把这个汉字集合转成我所需要的结构。 如下,有需要的兄弟可以随便看看。
// 表unicodeBiHUa[]中的结构类型
typedef struct tagUnicode1BiHua
{
unsigned short uni; // 汉字的unicode码
unsigned char bh; // 首笔画数字指示
}Unicode1BiHua;
// 首笔画的数字指示与对应的unicode码
// 1表示“横”;2表示“竖”;3表示“撇”;4表示“捺”;5表示“折”
typedef struct tagBiHua2UniInd
{
unsigned char ind;
unsigned short uni;
}BiHua2UniInd; const BiHua2UniInd BiHua2Uni[] =
{
{1, 0x4e00},
{2, 0x4e28},
{3, 0x4e3f},
{4, 0x4e36},
{5, 0x4e59}
};
// 包含了2W多个汉字的编码
const Unicode1BiHua unicodeBiHUa[] =
{
{0x4e00,1},{0x4e01,1},{0x4e02,1},{0x4e03,1},{0x4e04,2},
{0x4e05,1},{0x4e06,1},{0x4e07,1},{0x4e08,1},{0x4e09,1}, 字符有限制,发不了这么多的字符。NND
{0x9f9a,1},{0x9f9b,3},{0x9f9c,3},{0x9f9d,3},{0x9f9e,4},
{0x9f9f,3},{0x9fa0,3},{0x9fa1,3},{0x9fa2,3},{0x9fa3,3},
{0x9fa4,3},{0x9fa5,3}
};
// 接口函数
// 入口参数:hanzi--待查找汉字的unicode
// 返回:该汉字的首笔画unicode码
unsigned short UnicodeGet1BihuaCode(unsigned short hanzi)
{
char ind = 0;
unsigned short low, high, mid; low = 1;
high = 20902;
while (low <= high)
{
mid = (low + high) / 2;
if (unicodeBiHUa[mid - 1].uni == hanzi)
{
ind = unicodeBiHUa[mid - 1].bh;
break;
}
else if (unicodeBiHUa[mid - 1].uni < hanzi)
low = mid + 1;
else
high = mid - 1;
} if (ind <1 || ind > 5)
return 0xffff;
else
return (BiHua2Uni[ind - 1].uni);
}
OVER!
如何获取汉字的首笔画编码
原创wx5ffd8ca34ea45 ©著作权
©著作权归作者所有:来自51CTO博客作者wx5ffd8ca34ea45的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python查询汉字函数
python查询汉字函数
数据集 机器学习 特征提取 -
JS选择图片获取base64编码预览图片
通过将图片转为data url的base64格式编码,实现直接预览图片
图片预览 base64 dataurl 图片转base64