您的位置:首页 > 编程语言 > C#

C# 算法的逆推,汉字与数字的互转

2013-05-31 22:30 148 查看
private void button1_Click(object sender, EventArgs e)
{
int i;
try
{
string haha = "";
string str = "你好";
byte[] gb2312_bt = Encoding.GetEncoding("gb2312").GetBytes(str);
for (i = 0; i < (str.Length * 2); i += 2)
{
int n = (int)gb2312_bt[i] << 8;// <<这个是左移位, << 1 是 * 2,<< 2是 * 4, << 3是 * 8,那么<< 8 就是* 256了
n += (int)gb2312_bt[i + 1];
haha += " " + n.ToString();
}
MessageBox.Show(haha);
}
catch
{
MessageBox.Show("请输入汉字字符", "出现错误");
}
}
public void CountA()
{//由于汉字的区码与位码的取值范围的十六进制数均为01H~5EH(即十进制的01~94),所以汉字的高位字节与低位字节的取值范围则为A1H~FEH(即十进制的161~254)。
int h = 47811;//根据得出的结果逆推汉字
byte[] bts = new byte[2];
for (int i = 161; i <= 254; i++)
{
int nihao=256 * i;
if ((h - nihao) >= 161 && (h - nihao) <= 254)//这里判断都是根据上面的那个依据,和算法公式来做判断 和逆推的
{
bts[0] = (byte)i;
bts[1] = (byte)(h - nihao);
break;
}
}
string result = "";
result = Encoding.GetEncoding("gb2312").GetString(bts);//这里的这个编码 要和原来算法的一致
}

参考算法:http://www.coding123.net/article/20100805/2772.aspx

和汉字编码:http://zhidao.baidu.com/question/328878967.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: