将字符串转换为十六进制字符字符串的 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# 惯用方法是什么

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

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

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

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

  • String.ToCharArary

  • Enumerable.Aggregate;来自 System.LINQ,因此您可能需要添加using System.LINQ;

  • Convert.ToInt32

  • Int32.ToString(字符串格式),传递"X"会使结果十六进制而不是十进制

对于聚合,我使用了 lambda 表达式 ( parameters => return value )。这是一个需要currentc的功能,并且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();
    }