2

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

这就是我在VB中的做法:

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

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

4

3 回答 3

4

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

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

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

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

对于聚合,我使用了lambda 表达式( parameters => return value)。这是一个接受currentc做的功能return current + Convert.ToInt32(c).ToString("X");

如果有不清楚的地方,请随时在下面的评论中提问。

于 2012-05-03T20:00:24.033 回答
1

我不是 VB.NET 开发人员,但有一个转换器,我有这个:

for (i = 1; (i <= str.Length); i++) {
     hex_str = (hex_str + hex(asc(str.Substring((i - 1), 1))).ToString().ToLower());
}
于 2012-05-03T19:56:32.290 回答
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();
    }
于 2012-05-03T19:59:02.397 回答