我有一串字符,但我想要一串十六进制字符,其中十六进制字符通过将原始字符转换为整数然后将这些整数转换为十六进制字符来转换。我怎么做?
这就是我在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
。该十六进制字符通过聚合函数添加到hexStr
of 类型中。String
以下是上述表达式中使用的函数:
可枚举。聚合;来自 System.LINQ,因此您可能需要添加using System.LINQ;
Int32.ToString(String format),传递"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();
}