public byte[] ToBytes() { var len = 1 + dest.BytesLength + 1 + additionalString.BytesLength(Encoding); if (extraStrings.Length > 0) { if (extraStrings.Length > 255) { throw new Exception("extraString.Length > 255"); } len += 1 // strings count + 1; // check sum foreach (var item in extraStrings) { len += item.BytesLength(Encoding); } } var buf = new byte[len]; var c = 0; buf[c++] = (byte)((rd.Next() % 128) * 2); dest.ToBytes(buf, ref c); byte sum = 233; for (int i = 0; i < c; i++) { sum += buf[i]; } buf[c++] = sum; var sumBegin = c; sum = 66; additionalString.ToBytes(Encoding, buf, ref c); if (extraStrings.Length > 0) { buf[c++] = (byte)extraStrings.Length; foreach (var item in extraStrings) { item.ToBytes(Encoding, buf, ref c); } for (int i = sumBegin; i < c; i++) { sum += buf[i]; } buf[c++] = sum; } return(buf); }
public byte[] ToBytes() { var len = 1 + remoteEP.BytesLength + 1 + 1 + additionalString.BytesLength(Encoding); var buf = new byte[len]; var c = 0; buf[c++] = 0; remoteEP.ToBytes(buf, ref c); buf[c++] = status; byte sum = 233; for (int i = 0; i < c; i++) { sum += buf[i]; } buf[c++] = sum; additionalString.ToBytes(Encoding, buf, ref c); return(buf); }