C#如何将string类型的二进制格式的字符串转换成二进制格式

小蚂蚁工作室 2016-06-22 04:13:30
ffd8ffe0 00104a46 49460001 01000048 00480000 ffe10058 45786966 00004d4d 002a0000 00080002 01120003 00000001 00010000 87690004 00000001 00000026 00000000 0003a001 00030000 00010001 0000a002 00040000 00010000 08e0a003 00040000 00010000 05ec0000 0000ffed 00385068 6f746f73 686f7020 332e3000 3842494d 04040000 00000000 3842494d 04250000 00000010 d41d8cd9 8f00b204 e9800998 ecf8427e ffc00011 0805ec08 e0030122 00021101 031101ff c4001f00 00010501 01010101 01000000 00000000 00010203 04050607 08090a0b ffc400b5 10000201 03030204
这是一部分二进制字符串 如何转换成同等的二进制格式

...全文
413 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 hanjun0612 的回复:
你的意思不是 split(' ')吗?
split之后就可能要转为 List<byte[ ]>。不知道 lz 所谓的最终二进制格式什么“格式”,所以 split 也非重点。
  • 打赏
  • 举报
回复
“同等的二进制格式”是什么格式?你先要给出一个靠谱的说明出来。
fungchou 2016-06-24
  • 打赏
  • 举报
回复

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var str = "ffd8ffe0 00104a46 49460001 01000048 00480000 ffe10058 45786966 00004d4d 002a0000 00080002 01120003 00000001 00010000 87690004 00000001 00000026 00000000 0003a001 00030000 00010001 0000a002 00040000 00010000 08e0a003 00040000 00010000 05ec0000 0000ffed 00385068 6f746f73 686f7020 332e3000 3842494d 04040000 00000000 3842494d 04250000 00000010 d41d8cd9 8f00b204 e9800998 ecf8427e ffc00011 0805ec08 e0030122 00021101 031101ff c4001f00 00010501 01010101 01000000 00000000 00010203 04050607 08090a0b ffc400b5 10000201 03030204";

            var bytes = HexStringToByteArray(str.Replace(" ", ""));
        }

        public static byte[] HexStringToByteArray(String hexString)
        {
            int start = 0;

            if (hexString[0] == '0' && (hexString[1] == 'x' || hexString[1] == 'X'))
                start = 2;

            byte[] bytes = new byte[(hexString.Length - start) / 2];
            for (int i = start, len = hexString.Length; i < len; i += 2)
                bytes[i / 2] = Convert.ToByte(hexString.Substring(i, 2), 16);

            return bytes;
        }
    }
}
BenBenBears 2016-06-22
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
            var s = "ffd8ffe0 00104a46 49460001 01000048 00480000 ffe10058 45786966 00004d4d 002a0000 00080002 01120003 00000001 00010000 87690004 00000001 00000026 00000000 0003a001 00030000 00010001 0000a002 00040000 00010000 08e0a003 00040000 00010000 05ec0000 0000ffed 00385068 6f746f73 686f7020 332e3000 3842494d 04040000 00000000 3842494d 04250000 00000010 d41d8cd9 8f00b204 e9800998 ecf8427e ffc00011 0805ec08 e0030122 00021101 031101ff c4001f00 00010501 01010101 01000000 00000000 00010203 04050607 08090a0b ffc400b5 10000201 03030204";
            var a = s.Split(' ').Select(x => (int)Convert.ToInt64(x, 16)).ToArray();

            Console.WriteLine(a[1].ToString("x8")); //00104a46 验证无误
BenBenBears 2016-06-22
  • 打赏
  • 举报
回复
哥,你这串口通信吧,按协议来,不是“把一组二进制的字符串(string类型)转换成二进制类型(byte[])”。
xuzuning 2016-06-22
  • 打赏
  • 举报
回复
            var s = "ffd8ffe0 00104a46 49460001 01000048 00480000 ffe10058 45786966 00004d4d 002a0000 00080002 01120003 00000001 00010000 87690004 00000001 00000026 00000000 0003a001 00030000 00010001 0000a002 00040000 00010000 08e0a003 00040000 00010000 05ec0000 0000ffed 00385068 6f746f73 686f7020 332e3000 3842494d 04040000 00000000 3842494d 04250000 00000010 d41d8cd9 8f00b204 e9800998 ecf8427e ffc00011 0805ec08 e0030122 00021101 031101ff c4001f00 00010501 01010101 01000000 00000000 00010203 04050607 08090a0b ffc400b5 10000201 03030204";
            var a = s.Split(' ').Select(x => (int)Convert.ToInt64(x, 16)).ToArray();

            Console.WriteLine(a[1].ToString("x8")); //00104a46 验证无误
小蚂蚁工作室 2016-06-22
  • 打赏
  • 举报
回复
引用 2 楼 hanjun0612 的回复:
你的意思不是 split(' ')吗?
我的意思是我把一组二进制的字符串(string类型)转换成二进制类型(byte[]) 例如 string类型的01010101转换成二进制也是01010101
正怒月神 2016-06-22
  • 打赏
  • 举报
回复
你的意思不是 split(' ')吗?
小蚂蚁工作室 2016-06-22
  • 打赏
  • 举报
回复
求大神

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧