将字符串转换为十六进制字符字符串的 C# 惯用方法是什么
本文关键字:字符串 是什么 方法 字符 转换 十六进制 | 更新日期: 2023-09-27 18:33:10
我有一串字符,但我想有一串十六进制字符,其中十六进制字符通过将原始字符转换为整数,然后将这些整数转换为十六进制字符来转换。我该怎么做?
这就是我在 VB 中的做法:
for i = 1 to len(str)
hex_str = hex_str + lcase(cstr(hex(asc(mid(str, i, 1)))))
next
现在,在 C# 中执行此操作的最惯用方法是什么?
在 C# 中,我能想到的最简单的方法是:
var hexStr = str.ToCharArray()
.Aggregate("", (current, c)
=> current + Convert.ToInt32(c).ToString("X"));
第一行将字符串转换为类型为 char[]
的字符数组,第二行和第三行将每个字符转换为整数Int32
,然后转换为 String
类型的十六进制字符。该十六进制字符通过聚合函数添加到类型 String
的hexStr
中。
以下是上述表达式中使用的函数:
String.ToCharArary
Enumerable.Aggregate;来自 System.LINQ,因此您可能需要添加
using System.LINQ;
Convert.ToInt32
Int32.ToString(字符串格式),传递
"X"
会使结果十六进制而不是十进制
。
对于聚合,我使用了 lambda 表达式 ( parameters => return value
)。这是一个需要current
和c
的功能,并且return current + Convert.ToInt32(c).ToString("X");
如果有什么不清楚的地方,请随时在下面的评论中提问。
我不是 VB.NET 开发人员,但有一个转换器,我有这个:
for (i = 1; (i <= str.Length); i++) {
hex_str = (hex_str + hex(asc(str.Substring((i - 1), 1))).ToString().ToLower());
}
试试这个:
for (var i = 1; i <= str.Length; i++)
{
hex_str = hex_str + Convert.ToString(Convert.ToString(Convert.ToInt32(str[i - 1]), 16).ToUpper()).ToLower();
}