我有一个字符串,但我希望有一个十六进制字符串,通过将原始字符转换为整数然后将这些整数转换为十六进制字符来转换十六进制字符。我该怎么做?
这就是我在VB中的表现:
for i = 1 to len(str)
hex_str = hex_str + lcase(cstr(hex(asc(mid(str, i, 1)))))
next
现在,在C#中最常用的方法是什么?
答案 0 :(得分:4)
在C#中,我能想到的最简单的方法是:
var hexStr = str.ToCharArray()
.Aggregate("", (current, c)
=> current + Convert.ToInt32(c).ToString("X"));
第一行将字符串转换为类型char[]
的字符数组,第二行和第三行将每个字符转换为整数Int32
,然后转换为String
类型的十六进制字符。该十六进制字符通过aggregate function添加到hexStr
类型的String
。
以下是上述表达式中使用的函数:
Enumerable.Aggregate;来自System.LINQ,因此您可能需要添加using System.LINQ;
Int32.ToString(String format),传递"X"
会使结果为十六进制而非十进制。
为了汇总,我使用了lambda expression(parameters => return value
)。这是一个需要current
和c
以及return current + Convert.ToInt32(c).ToString("X");
如果不清楚,请随时在下面的评论中提问。
答案 1 :(得分:1)
我不是VB.NET开发人员,但使用转换器,我有这个:
for (i = 1; (i <= str.Length); i++) {
hex_str = (hex_str + hex(asc(str.Substring((i - 1), 1))).ToString().ToLower());
}
答案 2 :(得分:1)
试试这个:
for (var i = 1; i <= str.Length; i++)
{
hex_str = hex_str + Convert.ToString(Convert.ToString(Convert.ToInt32(str[i - 1]), 16).ToUpper()).ToLower();
}