什么是将字符串转换为十六进制字符串的C#-idiomatic方法?

时间:2012-05-03 19:53:37

标签: c# vb.net

我有一个字符串,但我希望有一个十六进制字符串,通过将原始字符转换为整数然后将这些整数转换为十六进制字符来转换十六进制字符。我该怎么做?

这就是我在VB中的表现:

for i = 1 to len(str)
    hex_str = hex_str + lcase(cstr(hex(asc(mid(str, i, 1))))) 
next 

现在,在C#中最常用的方法是什么?

3 个答案:

答案 0 :(得分:4)

在C#中,我能想到的最简单的方法是:

var hexStr = str.ToCharArray()
                .Aggregate("", (current, c)
                               => current + Convert.ToInt32(c).ToString("X"));

第一行将字符串转换为类型char[]的字符数组,第二行和第三行将每个字符转换为整数Int32,然后转换为String类型的十六进制字符。该十六进制字符通过aggregate function添加到hexStr类型的String

以下是上述表达式中使用的函数:

为了汇总,我使用了lambda expressionparameters => return value)。这是一个需要currentc以及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();
    }