我需要将ascii转换为十六进制值。请参阅Ascii表,但我列出了几个例子:
但我使用的是int而不是字符串值。有可能做到这一点。 因此int test = 12345; 需要获得转换后的i = 3132333435
答案 0 :(得分:6)
测试此
string input = "12345";
string hex = string.Join(string.Empty,
input.Select(c => ((int)c).ToString("X")).ToArray());
Console.WriteLine(hex);
注意:在C#4中,不需要调用.ToArray(),因为string.Join方法已被重载以接受IEnumerable<T>
。
以上将适用于真正的ASCII,因为UTF16的前128个代码点(C#的string
类型中使用的编码)具有与ASCII相同的数值,因此转换C#{{1} char
的值很好。然而,通常所谓的“ASCII”实际上是一些ANSI代码页(在美国,通常是代码页1252,“西欧(Windows)”,它有256个代码点,第二个128没有相同的值)用于UTF16。
如果您正在处理该问题或该问题的任何其他代码页,并且您将文本作为C#int
,则可以应用与上述相同的技术,但使用string
除外在转换为十六进制之前将C#Encoding
对象转换为string
的类:
byte[]
答案 1 :(得分:0)
将字符转换为ASCII
int c = (int)'a';
答案 2 :(得分:0)
Similair对Anthony Pegram的解决方案,但更多LINQ'ish和更短,但在聚合方法中多个字符串分配的速度较慢。
string hex = input.Select(c => ((int)c).ToString("X")).Aggregate((a, s) => a + s);
答案 3 :(得分:0)
尝试使用此方法
public static string AsciiToHexadecimal(List<int> asciiList)
{
return asciiList.Aggregate("", (current, i) => current + $"{i:X}");
}
这是一种方法,可以帮助您将ASCII数字数组转换为十六进制。