static public string getSpell(string cnChar)
{
byte[] arrCN = Encoding.Default.GetBytes(cnChar);
if (arrCN.Length > 1)
{
int area = (short)arrCN[0];
int pos = (short)arrCN[1];
int code = (area << 8) + pos;//区码移八位+位码-- 这步操作什么意思?进制转换,还是。?
int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 };
for (int i = 0; i < 26; i++)
{
int max = 55290;
if (i != 25) max = areacode[i + 1];
if (areacode[i] <= code && code < max)
{
return Encoding.Default.GetString(new byte[] { (byte)(65 + i) });
}
}
return "*";
}
else
return cnChar;
}
{
byte[] arrCN = Encoding.Default.GetBytes(cnChar);
if (arrCN.Length > 1)
{
int area = (short)arrCN[0];
int pos = (short)arrCN[1];
int code = (area << 8) + pos;//区码移八位+位码-- 这步操作什么意思?进制转换,还是。?
int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 };
for (int i = 0; i < 26; i++)
{
int max = 55290;
if (i != 25) max = areacode[i + 1];
if (areacode[i] <= code && code < max)
{
return Encoding.Default.GetString(new byte[] { (byte)(65 + i) });
}
}
return "*";
}
else
return cnChar;
}
左移相当于乘. 左移一位相当于乘2;左移两位相当于乘4;左移三位相当于乘8。 x<<1= x*2
x<<2= x*4
x<<3= x*8
x<<4= x*16 同理, 右移即相反: 右移 (>>)
将第一个操作数向右移动第二个操作数所指定的位数,空出的位置补0。 右移相当于整除. 右移一位相当于除以2;右移两位相当于除以4;右移三位相当于除以8。 x>>1= x/2
x>>2= x/4
x>>3= x/8
x>>4=x/16