如何将字符串转16进制的ASCII码数组形式

那该多好啊!!! 2019-08-06 11:17:32


比如   string buf="124"+" "+"245"+" "+"789";//中间的“ ”表示空格
// 需要转换为16进制的ASCII码形式,存到一个byte的数组里,好进行串口通讯时发送出去,

byte[] buf16=将字符串转为16进制数组形式;
...全文
369 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
巴士上的邂逅 2019-08-06
  • 打赏
  • 举报
回复
入行时间不短了啊。给你不全一下吧
byte[] buf16 = buf.Split(' ').Select(s=>Convert.ToByte(s)).ToArray();
  • 打赏
  • 举报
回复
引用 2 楼 巴士上的邂逅 的回复:
buf.Split(' ').Select(s=>Convert.ToByte(s)).ToArray()
输出的数组在哪里
  • 打赏
  • 举报
回复
引用 1 楼 github_36000833 的回复:

byte[] buf16 = Encoding.ASCII.GetBytes(buf);
这种转换出来的是10进制,我监视过了
巴士上的邂逅 2019-08-06
  • 打赏
  • 举报
回复
buf.Split(' ').Select(s=>Convert.ToByte(s)).ToArray()
github_36000833 2019-08-06
  • 打赏
  • 举报
回复


byte[] buf16 = Encoding.ASCII.GetBytes(buf);
良朋 2019-08-06
  • 打赏
  • 举报
回复
要加一个16,才是十六进制。 code=csharp] byte[] buf16 = buf.Split(' ').Select(s=>Convert.ToByte(s,16)).ToArray();[ [/code] 不过十六进制的124大于255,byte放不下了,你可能要2位2位的搞,写个函数吧。


        private byte[] StringToBytes16(string source)
        {
            byte[] destination = new byte[source.Length / 2];
            for (int i = 0, j = 0; i < source.Length && j < source.Length / 2; i += 2, j++)
            {
                string item = source.Substring(i, 2);
                destination[j] = Convert.ToByte(item, 16);
            }
            return destination;
        }

110,536

社区成员

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

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

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