C#编写byte[] 长

touree 2015-05-28 02:49:35
我有一个要发送的数据byte[] sender 等于new byte[?????长度]
发送的数据长度不确定,分很多种情况,但是定义byte的时候要写长度,
我想在发送数据长度确定后 填在[?????长度]处 怎么写代码?
请各位大神赐教
...全文
186 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-05-28
  • 打赏
  • 举报
回复
你是被人带到沟里去了 数据通讯时是有一个数据头的,包含命令、目标、数据长度等信息 比如是充填好的 head,待发送的数据是 data 那么实际发送的是 head.Concat(data).ToArray() 即 数据头+数据
於黾 2015-05-28
  • 打赏
  • 举报
回复
其实public static byte[] data =new data[200];这样更好 比你不断的去重新new要好 它占内存稳定,不会不断的申请新的内存,再去释放旧的内存
touree 2015-05-28
  • 打赏
  • 举报
回复
引用 10 楼 Z65443344 的回复:
public static byte[] data =new data[200]; 看你发送的东西,是某种设备的通信协议吧,这玩意肯定有个限制的,不可能无限大.你设置个足够大的数就行了 Serial.serialport.Write(data, 0, data.Length);这里不要用data.Length 改成Serial.serialport.Write(data, 0, 7);不就得了
只好先这么搞了
於黾 2015-05-28
  • 打赏
  • 举报
回复
至于LEN 你在执行analog()的时候把它赋值成7 在执行别的函数的时候赋值成别的,不就得了
於黾 2015-05-28
  • 打赏
  • 举报
回复
public static byte[] data =new data[200]; 看你发送的东西,是某种设备的通信协议吧,这玩意肯定有个限制的,不可能无限大.你设置个足够大的数就行了 Serial.serialport.Write(data, 0, data.Length);这里不要用data.Length 改成Serial.serialport.Write(data, 0, 7);不就得了
touree 2015-05-28
  • 打赏
  • 举报
回复
引用 3 楼 touree 的回复:
[quote=引用 楼主 touree 的回复:] 我有一个要发送的数据byte[] sender 等于new byte[?????长度] 发送的数据长度不确定,分很多种情况,但是定义byte的时候要写长度, 我想在发送数据长度确定后 填在[?????长度]处 怎么写代码? 请各位大神赐教
发送的数据就是 byte[] sender ,我想在确定发送长度后再写 byte[] sender的长度[/quote] 我直接给你看代码吧 再一个类中我定义了这个data public class Data { public static byte[] data ; public static int LEN = data.Length; 再另一个类的方法中 我想通过串口发送这个 data,这时发送data分好几中方法 每种发送的长度不一样 我只贴了一种 public class Communication : DataAnalysis { public static void analog() { data[2] = (byte)((LEN / 1000)<<4 | (LEN/100)); data[3] = (byte)(((LEN % 100) / 10)<<4 |(LEN % 100) % 10); data[4] = (byte)pattern.Id; data[5] = (byte)((hour / 10) << 4 | hour % 10);//高8位 data[6] = (byte)((min / 10) << 4 | min % 10);//低8位 Serial.serialport.Write(data, 0, data.Length);
於黾 2015-05-28
  • 打赏
  • 举报
回复
sender[3]=count; 这很难吗
於黾 2015-05-28
  • 打赏
  • 举报
回复
引用 5 楼 touree 的回复:
你说的第一个办法我也是那样想的 ,可是比如在sengder[3]这个位置 我要输出sender 的总长度 怎么办?
实例化之后给sender[3]赋值不就得了
Poopaye 2015-05-28
  • 打赏
  • 举报
回复
引用 楼主 touree 的回复:
我有一个要发送的数据byte[] sender 等于new byte[?????长度] 发送的数据长度不确定,分很多种情况,但是定义byte的时候要写长度, 我想在发送数据长度确定后 填在[?????长度]处 怎么写代码? 请各位大神赐教
用MemoryStream啊
touree 2015-05-28
  • 打赏
  • 举报
回复
引用 2 楼 Z65443344 的回复:
你可以先定义,但不实例化. 等确定了长度再实例化. 比如这样: byte[] b; ... ... b=new byte[count]; 或者你定义个足够大的数组,比如 byte[] b=new byte[1000000]; 发送的时候,根据实际的数据量发送,不要整个数组都发送出去
你说的第一个办法我也是那样想的 ,可是比如在sengder[3]这个位置 我要输出sender 的总长度 怎么办?
於黾 2015-05-28
  • 打赏
  • 举报
回复
引用 3 楼 touree 的回复:
发送的数据就是 byte[] sender ,我想在确定发送长度后再写 byte[] sender的长度
你这是自相矛盾啊 你一定是一开始无法确定到底有多少数据,才要动态的往这个数组里去填数据 否则如果发送的数据就是byte[] sender,长度你就已经知道了啊
touree 2015-05-28
  • 打赏
  • 举报
回复
引用 楼主 touree 的回复:
我有一个要发送的数据byte[] sender 等于new byte[?????长度] 发送的数据长度不确定,分很多种情况,但是定义byte的时候要写长度, 我想在发送数据长度确定后 填在[?????长度]处 怎么写代码? 请各位大神赐教
发送的数据就是 byte[] sender ,我想在确定发送长度后再写 byte[] sender的长度
於黾 2015-05-28
  • 打赏
  • 举报
回复
你可以先定义,但不实例化. 等确定了长度再实例化. 比如这样: byte[] b; ... ... b=new byte[count]; 或者你定义个足够大的数组,比如 byte[] b=new byte[1000000]; 发送的时候,根据实际的数据量发送,不要整个数组都发送出去
by_封爱 版主 2015-05-28
  • 打赏
  • 举报
回复
你数据本身不是byte[]你是要转换是吧. 那你直接得到转换的代码就行了 比如byte [] a =text.xxx.getbytes("你好")

110,533

社区成员

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

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

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