怎么样使用数字键盘输入法?

怎么样使用数字键盘输入法?

是否还记得去年流行的一个“神秘”的小把戏?就是在MSNQQ之类的IM工具的消息输入框里,按下键盘上的ALT键,然后在键盘的数字区域打入29482,然后再松开ALT键,然后一个“猪”字就崩了出来?当时有好几个人发了mail告诉我这个小把戏,我马上有了兴趣,于是查了点资料想解开背后的原因。然后用JAVA写了个小程序,输入一个字符串,然后输出这种神秘输入法的“编码”。今天重新翻了出来,改写成了C#版。

事实上,很容易知道,29482就是“猪”字的UNICODE编码的十进制值,十六进制值是/u732A,马上就没有了悬念,对于像JAVA.NET平台,十分容易就可以获取到字符的UNICODE编码值,因为其本身就是用宽字符存储char型数据的,而且有直接的API可以调用。甚至最简单的,用(int)char强制转换,就可以得到字符的UNICODE编码十进制值。不过这里讲的程序还是不那么做,先获取字符的两个字节,然后再自己转换。

当然,如果光是UNICODE编码,就太没有意思了,于是还顺便做了扩展ASCII编码的获取方法,当然是针对汉字gb2312编码的,这也是简体中文系统的默认编码。这种“输入法”其实跟IM工具毫无关系,似乎就是操作系统开放的一个功能,只是大家没察觉而已,之所以网上流行的说法都是MSNQQ里输入,是因为这两个工具的字符存储是UNICODE的,所以,事实上所有UNICODE存储的软件都可以用这种输入法,比如MS Office Word,比如以UNICODE存储方式运行的记事本程序(Windows记事本默认是以ASCII编码存储的,但可以用另存为,选择一种字符编码)。那么,对于ASCII编码呢?其实找到了ASCII编码,一样可以使用这种方式输入,双字节语言比如汉语、日语、韩语都可以用扩展ASCII编码存储,都容易获取其编码。

好了,不多说了,直接贴代码了,程序很短,也没什么难点,简单说明一下WordDecode类,用一个UNICODE字符构造该类的实例,然后用属性直接获取到相应的编码。

1. WordEncode

怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?///<summary>
怎么样使用数字键盘输入法?///字符编码获取
怎么样使用数字键盘输入法?
///</summary>

怎么样使用数字键盘输入法?classWordDecode
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?
privatebytehighByteUni;
怎么样使用数字键盘输入法?
privatebytelowByteUni;
怎么样使用数字键盘输入法?
privatebytehighByteEAscii;
怎么样使用数字键盘输入法?
privatebytelowByteEAscii;
怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?
privatestaticEncodingeeas=System.Text.ASCIIEncoding.GetEncoding("gb2312");
怎么样使用数字键盘输入法?
privatestaticEncodingeuni=System.Text.UnicodeEncoding.Unicode;
怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?
publicbyteHighByteUni
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
get{returnhighByteUni;}
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?set{highByteUni=value;}
怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?
publicbyteLowByteUni
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
get{returnlowByteUni;}
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?set{lowByteUni=value;}
怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
///<summary>
怎么样使用数字键盘输入法?///Unicode编码十六进制形式
怎么样使用数字键盘输入法?
///</summary>

怎么样使用数字键盘输入法?publicstringUnicodeAsHex
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?
get
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?{
怎么样使用数字键盘输入法?
if(highByteUni!=0)
怎么样使用数字键盘输入法?
returnString.Format("/u{0:X}{1:X}",highByteUni,lowByteUni);
怎么样使用数字键盘输入法?
returnString.Format("/u{0:X}",lowByteUni);
怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?
publicbyteHighByteEAscii
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
get{returnhighByteEAscii;}
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?set{highByteEAscii=value;}
怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?
publicbyteLowByteEAscii
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
get{returnlowByteEAscii;}
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?set{lowByteEAscii=value;}
怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
///<summary>
怎么样使用数字键盘输入法?///EAscii编码十六进制形式(gb2312)
怎么样使用数字键盘输入法?
///</summary>

怎么样使用数字键盘输入法?publicstringEAsciiAsHex
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?
get
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?{
怎么样使用数字键盘输入法?
if(highByteEAscii!=0)
怎么样使用数字键盘输入法?
returnString.Format("/0x{0:X}{1:X}",lowByteEAscii,highByteEAscii);
怎么样使用数字键盘输入法?
returnString.Format("/0x{0:X}",lowByteEAscii);
怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
///<summary>
怎么样使用数字键盘输入法?///数字键盘Unicode编码的十进制值
怎么样使用数字键盘输入法?
///</summary>

怎么样使用数字键盘输入法?publicstringKeyboardNumAreaUnicodeValue
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?
//20013->78(High)45(Low)
怎么样使用数字键盘输入法?
//100111000101101
怎么样使用数字键盘输入法?
//就是"中"字
怎么样使用数字键盘输入法?get
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?{
怎么样使用数字键盘输入法?
intu=0;
怎么样使用数字键盘输入法?u
|=this.highByteUni;
怎么样使用数字键盘输入法?u
<<=8;
怎么样使用数字键盘输入法?u
|=this.lowByteUni;
怎么样使用数字键盘输入法?
returnu.ToString();
怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
///<summary>
怎么样使用数字键盘输入法?///数字键盘EAscii编码的十进制值(gb2312)
怎么样使用数字键盘输入法?
///</summary>

怎么样使用数字键盘输入法?publicstringKeyboardNumAreaEAsciiValue
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?
//54992->208(High)214(low)
怎么样使用数字键盘输入法?
//1101000011010110
怎么样使用数字键盘输入法?
//就是"中"字
怎么样使用数字键盘输入法?get
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?{
怎么样使用数字键盘输入法?
intu=0;
怎么样使用数字键盘输入法?u
|=this.lowByteEAscii;
怎么样使用数字键盘输入法?u
<<=8;
怎么样使用数字键盘输入法?u
|=this.highByteEAscii;
怎么样使用数字键盘输入法?
returnu.ToString();
怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
///<summary>
怎么样使用数字键盘输入法?///原字符(Unicode编码)
怎么样使用数字键盘输入法?
///</summary>

怎么样使用数字键盘输入法?publicCharCharacterUni
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?
get
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?{
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
returneuni.GetChars(newbyte[]{this.lowByteUni,this.highByteUni})[0];
怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?}

怎么样使用数字键盘输入法?
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
///<summary>
怎么样使用数字键盘输入法?///构造函数
怎么样使用数字键盘输入法?
///</summary>
怎么样使用数字键盘输入法?///<paramname="uniChar">一个16位宽字符</param>

怎么样使用数字键盘输入法?publicWordDecode(charuniChar)
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
{
怎么样使用数字键盘输入法?怎么样使用数字键盘输入法?
byte[]bsUni=euni.GetBytes(newchar[]{uniChar});
怎么样使用数字键盘输入法?
this.highByteUni=bsUni[1];
怎么样使用数字键盘输入法?
this.lowByteUni=bsUni[0];