http://archive.cnblogs.com/a/1348105/
/*
全角字符从的unicode编码从65281~65374
半角字符从的unicode编码从 33~126
* 差值65248
空格比较特殊,全角为 12288,半角为 32
*/
public
char
FullCodeToHalfCode(
char
c)
{
//
得到c的编码
byte
[] bytes
=
System.Text.Encoding.Unicode.GetBytes(c.ToString());
int
H
=
Convert.ToInt32(bytes[
1
]);
int
L
=
Convert.ToInt32(bytes[
0
]);
//
得到unicode编码
int
value
=
H
*
256
+
L;
//
是全角
if
(value
>=
65281
&&
value
<=
65374
)
{
int
halfvalue
=
value
-
65248
;
//
65248是全半角间的差值。
byte
halfL
=
Convert.ToByte(halfvalue);
bytes[
0
]
=
halfL;
bytes[
1
]
=
0
;
}
else
if
(value
==
12288
)
{
int
halfvalue
=
32
;
byte
halfL
=
Convert.ToByte(halfvalue);
bytes[
0
]
=
halfL;
bytes[
1
]
=
0
;
}
else
{
return
c;
}
//
将bytes转换成字符
string
ret
=
System.Text.Encoding.Unicode.GetString(bytes);
return
Convert.ToChar(ret);
}