C# 十进制 字符串数字和byte数组间的转换

前排声明,新手,着急用,所以摸着石头过河。感觉有好的办法没找到,不定期可能还会更新。

所有方案整合于互联网 如有雷同 都是我抄

  • 方案一

字符/字符串本身没有涉及进制转换,也就是没有溢出,那么直接调用byte.Parse(“字符数字”)即可,如果大于255 会报错,也请别这么干。

string a = "10 67 65 83 67 65 68 69 32 84 111 112 333 111 103 121 32 86 49 44 32 40 99 41 32 77 97 116 114 97 45 68 97 116 97 118 105 115 105 111 110";//务必255 以内 空格间隔
byte[] intBuff = a.Select(x => byte.Parse(x)).ToArray();
string[] a = { "55", "88", "255" };
byte m = byte.Parse(a[1]);
  • 下面是另个方案

这样出来的intBuff是个4byte数组,不确定是否正常,感觉有点怪怪的,他这么转我大概能理解,可能是转换中间用了这么多的空位,如果要求不高可以用

            string a = "352";
            byte[] intBuff = BitConverter.GetBytes(i);
  • 后排讨论一个错误方案

这样出来的intBuff会变成三个字节的数组,大概是50几,结果忘了记录了,反正就是对应的ascii值,也就是说用这个函数转出来的是ascii对应的码值,按照玩单片机的搞法,其实也够了,三个数减去中间值,自己写个转换函数,一位一位的对应(减去ascii和实际数的差值)上乘以位权,比如5100 +110+2,再除以256,溢出的赋值给高位,余数给低位,当然,这玩意是高级语言而且有丰富的库,所以我们最好还是不要自己实现????

            string a = "352";
            byte[] intBuff = Encoding.UTF8.GetBytes(a);

*说实话我觉得自己实现比较快。姑且,有这种转换函数吧,我玩labview是有直接转换的控件的,不知道为什么这个有点难找,不过也是我手头没有书,也没怎么学过只能网上找。
此外...十六进制的现成的转换方法有吗...*

ok 16进制的单个字节转换,代码如下

            string[] a = new[] { "0D" };
            int i = int.Parse(a[0],System.Globalization.NumberStyles.HexNumber);