【问题标题】:String to byte array [duplicate]字符串到字节数组[重复]
【发布时间】:2011-12-14 07:05:13
【问题描述】:

可能重复:
How do you convert Byte Array to Hexadecimal String, and vice versa, in C#?
Convert hex string to byte array

我有一个这样的字符串: "021500010000146DE6D800000000000000003801030E9738"

我需要的是以下字节数组: 02 15 00 01 00 00 14 6D E6 D8 00 00 00 00 00 00 00 00 38 01 03 0E 97 38(每对数字是各自字节中的十六进制值)。

知道如何进行这种转换吗?谢谢!!

【问题讨论】:

  • 你写信是为了做什么?
  • “可能重复”是一个完全不同的问题。他不是在问如何使用某种编码将字符串编码为byte[]。此处的字符串包含应转换为byte[] 的十六进制值。
  • 我看不出这些问题是如何完全重复的。
  • 你非常想要这个页面上的第二个例子:msdn.microsoft.com/en-us/library/bb311038.aspx。它的“肉”是 Convert.ToInt32(hex, 16) (第二个参数指定从 Base-16 转换,即 Hex)。我在 Google 上找到了这个:“C# parse hex”
  • 我也看到了“重复”的帖子,我真的认为这完全不同。

标签: c#


【解决方案1】:

你非常想在这个 page 上第二个例子。
重要的部分是:

Convert.ToInt32(hex, 16);

第一个参数是一个 2 字符的字符串,指定一个十六进制值(例如 "DE")。
第二个参数指定从Base-16转换,即Hex。

示例中未显示将字符串拆分为两个字符的段,但这是您的问题所必需的。我相信它足够简单,您可以处理。

我通过 Google: "C# parse hex"

找到了这个

【讨论】:

    【解决方案2】:
        string str = "021500010000146DE6D800000000000000003801030E9738";
        List<byte> myBytes = new List<byte>();
    
        try
        {
            while (!string.IsNullOrEmpty(str))
            {
                myBytes.Add(Convert.ToByte(str.Substring(0, 2), 16));
                str = str.Substring(2);
            }
        }
        catch (FormatException fe)
        {
            //handle error
        }
        for(int i = 0; i < myBytes.Count; i++)
        {
            Response.Write(myBytes[i].ToString() + "<br/>");
        }
    

    【讨论】:

    • Convert.ToByte 在int 上?我的意思是,过早的优化很糟糕,但是当最简单的方法也更快时......
    • @BenVoigt 啊,我发现在一次转换中可以执行正确的功能。谢谢!
    【解决方案3】:
    var arr = new byte[s.Length/2];
    for ( var i = 0 ; i<arr.Length ; i++ )
        arr[i] = (byte)Convert.ToInt32(s.SubString(i*2,2), 16);
    

    【讨论】:

    • 这段代码真的很好用。但只有一个细节,正确的代码是“s.Substring”。谢谢大家。
    • 可以使用 Convert.ToByte 代替 ToInt32。
    猜你喜欢
    • 2018-05-01
    • 2017-09-21
    • 2015-03-19
    • 2016-03-28
    • 1970-01-01
    • 2019-02-22
    • 2013-08-04
    • 2014-08-30
    • 2011-10-04
    相关资源
    最近更新 更多