需要将字符串/字符转换为ASCII值

6

我需要将字符转换为十六进制值。请参考Ascii表格,但下面列出了一些示例:

  • char 1 = 31 2 = 32 3 = 33 4 = 34 5 = 35 A = 41 a = 61 等等

因此,字符串str =“12345”; 需要获得转换后的str =“3132333435”。

4个回答

9
我认为以下内容就是你所需要的:

我想这就是你所需的全部:

string finalValue;
byte[] ascii = Encoding.ASCII.GetBytes(yourString);
foreach (Byte b in ascii) 
{
  finalValue += b.ToString("X");
}

更多信息请参见MSDN:http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx

编辑:转换为十六进制:

string finalValue;
int value;
foreach (char c in myString)
{
  value = Convert.ToInt32(c);
  finalValue += value.ToString("X"); 
  // or finalValue = String.Format("{0}{1:X}", finalValue, value);
}
// use finalValue

起初,我不理解十六进制注释,所以我重写了它。今天早上 SO 告诉我这个注释是新的,所以我再次查看,结果我只是忘记在 ToString() 中加入转换修饰符。所以,这是两种获得你想要的方式。如果我使用 Convert.ToByte,第二个块就会变得多余! - Joseph Yaduvanshi

3
string.Join("", from c in "12345" select ((int)c).ToString("X"));

时髦的...甚至看起来都不像C#了。 - mpen
那是一个非常有趣的陈述。我认为我工作的人可能无法理解它(他们在大约6个月前才刚刚脱离.NET 1.1)。 - Joseph Yaduvanshi

3
string s = "abc123";
foreach(char c in s)
{
   Response.Write((int)c + ",");
}

1
为了将其放在单行中,更易读(以我个人看来)
var result = "12345".Aggregate("", (res, c) => res + ((byte)c).ToString("X"));

这将返回"3132333435",就像您要求的一样 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接