我需要将 ascii 值转换为十六进制值。请参阅 Ascii 表,但我在下面列出了一些示例:
- ASCII 1 = 31
- 2 = 32
- 3 = 33
- 4 = 34
- 5 = 35
- A = 41
- a = 61 等
但我使用 int 而不是字符串值。是否可以这样做。
因此int测试=12345;
需要得到转换后的i = 3132333435
测试一下
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
type)与 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)