需要将ascii值转换为十六进制值

SA.*_*SA. 2 c# hex ascii

我需要将ascii转换为十六进制值.请参阅Ascii表,但我有几个例子如下:

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

但我使用的是int而不是字符串值.有可能做到这一点.因此int test = 12345; 需要获得转换后的i = 3132333435

Ant*_*ram 6

测试一下

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#charint是好的.然而,通常所谓的"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)