我需要将ascii转换为十六进制值.请参阅Ascii表,但我有几个例子如下:
但我使用的是int而不是字符串值.有可能做到这一点.因此int test = 12345; 需要获得转换后的i = 3132333435
测试一下
string input = "12345";
string hex = string.Join(string.Empty,
input.Select(c => ((int)c).ToString("X")).ToArray());
Console.WriteLine(hex);
Run Code Online (Sandbox Code Playgroud)
注意:在C#4中,不需要调用.ToArray(),因为string.Join方法已被重载以接受IEnumerable<T>.
上述将真正的ASCII工作,因为UTF16(在C#的使用的编码的前128个码点string型)具有相同的数值作为ASCII等铸造C#char值int是好的.然而,通常所谓的"ASCII"实际上是一些ANSI代码页(在美国,通常是代码页1252,"西欧(Windows)",它有256个代码点,第二个128没有相同的值)用于UTF16.
如果您正在处理该问题或任何其他代码页,并且您将文本作为C#string,则可以应用与上面相同的技术,除非使用Encoding类将C#string对象byte[]转换为转换为十六进制之前的代码:
string input = "12345";
// Replace 1252 with whatever code page you're using, if not that one
string hex = string.Join(string.Empty,
Encoding.GetEncoding(1252).GetBytes(input).Select(b => b.ToString("X")).ToArray());
Console.WriteLine(hex);
Run Code Online (Sandbox Code Playgroud)