标题:怎样把字符串转换成ASCII码?百度里找的都不对啊!
只看楼主
lzm
Rank: 1
来 自:广东
等 级:新手上路
帖 子:156
专家分:0
注 册:2007-9-2
结帖率:33.33%
 问题点数:0 回复次数:8 
怎样把字符串转换成ASCII码?百度里找的都不对啊!
string p1, p2;  int pASCII;  string txtpwp;  pASCII = 0; txtpwp = "";
                    for (i = 1; i < user_name.Length; i++)
                    {
                        user_name = user_name.Remove(0, i - 1);
                        p1 = user_name.Remove(1);
                        pASCII = pASCII + System.Convert.ToInt32(p1);
                        pASCII = pASCII + 20;
                        p2 = System.Convert.ToString(pASCII);
                        txtpwp = txtpwp + p2;
                    }
我想用ASCII码加密字符串,用以上方法会出错啊!
请问那里出错了?出错是什么原因?还有其它更好的方法吗?
搜索更多相关主题的帖子: 百度 ASCII 字符 name txtpwp 
2008-03-15 18:44
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
得分:0 
查MSDN

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-15 20:27
lzm
Rank: 1
来 自:广东
等 级:新手上路
帖 子:156
专家分:0
注 册:2007-9-2
得分:0 
我查了下!我的MSDN是英文版的!看不懂!
2008-03-15 21:28
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
得分:0 
那就不要学编程了。我可以肯定的说百度里肯定能找到正确的答案。其次MSDN没有中文版的吗?第一次听说……

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-16 07:05
lzm
Rank: 1
来 自:广东
等 级:新手上路
帖 子:156
专家分:0
注 册:2007-9-2
得分:0 
我正在下载新的MSDN 2.4G啊
2008-03-16 07:13
lzm
Rank: 1
来 自:广东
等 级:新手上路
帖 子:156
专家分:0
注 册:2007-9-2
得分:0 
找到解决方法了!谢谢提醒!我贴出来大家也看看对不!
解决方法如下:
如果还想从 System.String 类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了。为了进行这样的转换,我们不得不借助另一个类:System.Text.Encoding。该类提供了 bye[] GetBytes(string) 方法将字符串转换成字节数组,还提供了 string GetString(byte[]) 方法将字节数组转换成字符串。
  System.Text.Encoding 类似乎没有可用的构造函数,但我们可以找到几个默认的 Encoding,即 Encoding.Default(获取系统的当前 ANSI 代码页的编码)、Encoding.ASCII(获取 7 位 ASCII 字符集的编码)、Encoding.Unicode(获取采用 Little-Endian 字节顺序的 Unicode 格式的编码)、Encoding.UTF7(获取 UTF-7 格式的编码)、Encoding.UTF8(获取 UTF-8 格式的编码) 等。这里主要说说 Encoding.Default 和 Encoding.Unicode 用于转换的区别。
  在字符串转换到字节数组的过程中,Encoding.Default 会将每个单字节字符,如半角英文,转换成 1 个字节,而把每个双字节字符,如汉字,转换成 2 个字节。而 Encoding.Unicode 则会将它们都转换成两个字节。我们可以通过下列简单的了解一下转换的方法,以及使用 Encoding.Default 和 Encodeing.Unicode 的区别:

private void TestStringBytes() {
    string s = "C#语言";
    byte[] b1 = System.Text.Encoding.Default.GetBytes(s);
    byte[] b2 = System.Text.Encoding.Unicode.GetBytes(s);
    string t1 = "", t2 = "";
    foreach (byte b in b1) {
        t1 += b.ToString("") + " ";
    }
    foreach (byte b in b2) {
        t2 += b.ToString("") + " ";
    }
    this.textBox1.Text = "";
    this.textBox1.AppendText("b1.Length = " + b1.Length + "\n");
    this.textBox1.AppendText(t1 + "\n");
    this.textBox1.AppendText("b2.Length = " + b2.Length + "\n");
    this.textBox1.AppendText(t2 + "\n");
}

  运行结果如下,不说详述,相信大家已经明白了。

b1.Length = 6
67 35 211 239 209 212
b2.Length = 8
67 0 35 0 237 139 0 138

  将字节数组转换成字符串,使用 Encoding 类的 string GetString(byte[]) 或 string GetString(byte[], int, int) 方法,具体使用何种 Encoding 还是由编码决定。在 TestStringBytes() 函数中添加如下语句作为实例:

byte[] bs = {97, 98, 99, 100, 101, 102};
string ss = System.Text.Encoding.ASCII.GetString(bs);
this.textBox1.AppendText("The string is: " + ss + "\n");

  运行结果为:The string is: abcdef
2008-03-16 07:36
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
得分:0 
常看MSDN和认真的搜索,不要一下就放弃了。

努力吧,路还很长!

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2008-03-16 07:40
easydw
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-12-2
得分:0 
楼主的方法很好,很有用,加油

另,楼上的是SB,就会说风凉话
2010-06-08 20:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-203574-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057691 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved