string s="11-aa-22-bb";
byte [] b=s.Split('-').AsParallel().Select(x => Convert.ToByte(x, 16)).ToArray();

解决方案 »

  1.   

    不过LZ似乎还不明白byte[]跟string 或者0x5A 或者是数字这类东西之间的关系..不过不要紧.等你把你现在的问题解决了之后 你一定还会来问的..因为我打赌你肯定不会...
      

  2.   

    一行写完的:var bytes = Enumerable.Range(0, str.Length/2).Select(i => Convert.ToByte(new string(str.ToCharArray(i, 2)), 16)).ToArray();或者快一点点的:Func<char, int> c2i = c => {
        if (c >= '0' && c <= '9')
            return c - '0';
        if (c >= 'a' && c <= 'f')
            return (c - 'a') + 10;
        throw new ArgumentOutOfRangeException();
    };
    var bytes = Enumerable.Range(0, str.Length/2).Select(i => (byte)(c2i(str[i]) << 4 | c2i(str[i + 1]))).ToArray();
      

  3.   

    var bytes = Enumerable.Range(0, str.Length/2).Select(i => Convert.ToByte(new string(str.ToCharArray(i, 2)), 16)).ToArray();这句不对,转出来是11,1a,aa这样的
      

  4.   

       public byte[] Hex2Bin(string sourceStr, int bytecount)
            {
                sourceStr = Regex.Replace(sourceStr, "[^a-fA-F0-9]", "");
                byte[] res = new byte[bytecount];
                for (int i = 0; i < bytecount; i++)
                {
                    var temp = new string(sourceStr.Skip(i * 2).Take(2).ToArray());
                    res[i] = byte.Parse(temp, System.Globalization.NumberStyles.HexNumber);
                }
                return res;
            }
      

  5.   

    不是说要转换成 byte[]{0x11,0xaa,0x22,0xbb} 么,大家给的代码都是转成这个的,
    先搞清楚自己到底要什么,什么叫加上0x,你要的结果是 byte[]{0x11,0xaa,0x22,0xbb} 还是 string[] {"0x11", "0xaa", "0x22" "0xbb" },或者是别的什么
      

  6.   

    public static string ToHexString(byte[] bytes)
    {
        var returnStr = new StringBuilder();
        for (int i = 0; i < bytes.Length; i++)
            returnStr.Append(bytes[i].ToString("X2"));
        return returnStr.ToString();
    }public static byte[] ToHex(string hexString)
    {
        var datas = new byte[hexString.Length / 2];
        var j = 0;
        for (var i = 0; i < hexString.Length; i += 2)
            datas[j++] = Convert.ToByte(hexString.Substring(i, 2), 16);
        return datas;
    }