【问题标题】:Need to convert string/char to ascii values需要将字符串/字符转换为 ascii 值
【发布时间】:2011-02-11 18:39:56
【问题描述】:

我需要将 char 转换为十六进制值。请参阅 Ascii 表,但我在下面列出了一些示例:

  • 字符 1 = 31 2 = 32 3 = 33 4 = 34 5 = 35 A = 41 a = 61 等

因此字符串 str = "12345"; 需要得到转换后的str = "3132333435"

【问题讨论】:

    标签: c# asp.net visual-studio winforms


    【解决方案1】:

    我想这就是你所需要的:

    string finalValue;
    byte[] ascii = Encoding.ASCII.GetBytes(yourString);
    foreach (Byte b in ascii) 
    {
      finalValue += b.ToString("X");
    }
    

    MSDN 上的更多信息:http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx

    编辑:转十六进制:

    string finalValue;
    int value;
    foreach (char c in myString)
    {
      value = Convert.ToInt32(c);
      finalValue += value.ToString("X"); 
      // or finalValue = String.Format("{0}{1:X}", finalValue, value);
    }
    // use finalValue
    

    【讨论】:

    • 一开始没看懂十六进制注释,所以重写了。今天早上 SO 告诉我评论是新的,所以我再看一遍,我只是忘记了 ToString() 中的转换修饰符。所以,这是获得你想要的东西的两种方法。如果我使用 Convert.ToByte,第二个块将是多余的!
    【解决方案2】:
    string.Join("", from c in "12345" select ((int)c).ToString("X"));
    

    【讨论】:

    • snazzy... 甚至不再像 C# 了。
    • 这是一个非常有趣的说法。我不认为我工作的人会理解它(直到大约 6 个月前他们才被困在 .NET 1.1 中)。
    【解决方案3】:
    string s = "abc123";
    foreach(char c in s)
    {
       Response.Write((int)c + ",");
    }
    

    【讨论】:

      【解决方案4】:

      在一行中得到它,并且更具可读性(imo)

      var result = "12345".Aggregate("", (res, c) => res + ((byte)c).ToString("X"));
      

      这将返回 "3132333435",正如您所要求的 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-17
        • 2013-09-27
        • 2015-09-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多