汉字取内码、区位码及拼音简码 源代码.docx
汉字取内码、区位码及拼音简码源代码汉字取内码、区位码及拼音简码
.版本2
.子程序取汉字内码,文本型,公开
.参数待查汉字,文本型
.局部变量高字节,整数型
.局部变量低字节,整数型
.局部变量内码,文本型
源代码中的“高字节”和“低字节”可以直接用字节型数据,而不用整数型,这样就不用做“位与”运算了。
高字节=位与(取代码(待查汉字,1),255)
低字节=位与(取代码(待查汉字,2),255)
内码=取十六进制文本(高字节)+取十六进制文本(低字节)
返回(内码)
.子程序取汉字区位码,文本型,公开
.参数待查汉字,文本型
.局部变量高字节,整数型
.局部变量低字节,整数型
.局部变量内码,文本型
.局部变量区码,整数型
.局部变量位码,整数型
.局部变量区位码,文本型
高字节=位与(取代码(待查汉字,1),255)
低字节=位与(取代码(待查汉字,2),255)
内码=取十六进制文本(高字节)+取十六进制文本(低字节)
区码=高字节-160
位码=低字节-160
区位码=到文本(区码×100+位码)返回(区位码)
.子程序取汉字拼音简码,文本型,公开,取GB2812-80一级字库汉字拼音简码
.参数待查汉字,文本型
.局部变量高字节,整数型
.局部变量低字节,整数型
.局部变量内码,文本型
.局部变量区码,整数型
.局部变量位码,整数型
.局部变量区位码,整数型
高字节=位与(取代码(待查汉字,1),255)
低字节=位与(取代码(待查汉字,2),255)
内码=取十六进制文本(高字节)+取十六进制文本(低字节)
区码=高字节-160
位码=低字节-160
区位码=区码×100+位码
.判断开始(区位码≥1601且区位码≤1636)
返回(“A”)
.判断(区位码≥
返回(“B”)
1637
且
区位码
≤
1832)
.判断(区位码≥
1833
且
区位码
≤
2077)
返回(“C”)
.判断(区位码≥
2078
且
区位码
≤
2273)
返回(“D”)
.判断(区位码≥
2274
且
区位码
≤
2301)
返回(“E”)
.判断(区位码≥
2302
且
区位码
≤
2432)
返回(“F”)
.判断(区位码≥
2433
且
区位码
≤
2593)
返回(“G”)
.判断(区位码≥
2594
且
区位码
≤
2786)
返回(“H”)
.判断(区位码≥
2787
且
区位码
≤
3105)
返回(“J”)
.判断(区位码≥
3106
且
区位码
≤
3211)
返回(“K”)
.判断(区位码≥
3212
且
区位码
≤
3471)
返回(“L”)
.判断(区位码≥
3472
且
区位码
≤
3634)
返回(“M”)
.判断(区位码≥
3635
且
区位码
≤
3721)
返回(“N”)
.判断(区位码≥
3722
且
区位码
≤
3729)
返回(“O”)
.判断(区位码≥
3730
且
区位码
≤
3857)
返回(“P”)
.判断(区位码≥
3858
且
区位码
≤
4026)
返回(“Q”)
.判断(区位码≥
4027
且
区位码
≤
4085)
返回(“R”)
.判断(区位码≥
4086
且
区位码
≤
4389)
返回(“S”)
.判断(区位码≥
返回(“T”)
4390
且
区位码
≤
4557)
.判断(区位码≥
4558
且
区位码
≤
4683)
返回(“W”)
.判断(区位码≥
4684
且
区位码
≤
4924)
返回(“X”)
.判断(区位码≥
4925
且
区位码
≤
5248)
返回(“Y”)
.判断(区位码≥
5249
且
区位码
≤
5589)
返回(“Z”)
.默认
返回(“出范围”)
.判断结束
具体实践代码,以内码为例
publicstaticstringGetCodstring(stringUnName)
{
inti=0;ushortkey=0;
stringstrResult=string.Empty;
//创建两个不同的encoding对象Encodingunicode=Encoding.Unicode;
//创建GBK码对象
Encodinggbk=Encoding.GetEncoding(936);
//