public override string ToString() { int dataLen; byte[] dataStuff = ByteStuffing.Stuff(_data); if (_data == null) { dataLen = 0; } else { dataLen = dataStuff.Length; } byte[] result = new byte[3 + dataLen]; int i = 0; result[i++] = SequenceNumber; result[i++] = Acknowledgment; result[i++] = _controlSum; if (dataStuff != null) { foreach (var item in dataStuff) { result[i++] = item; } } return(Encoding.UTF8.GetString(result)); }
public static Segment Parse(string stringSegment) { byte[] bytesSegment = Encoding.UTF8.GetBytes(stringSegment ?? throw new ArgumentNullException()); int i = 0; byte sequenceNumber = bytesSegment[i++]; byte acknowledgment = bytesSegment[i++]; byte controlSum = bytesSegment[i++]; List <byte> list = new List <byte>(); for (int k = i; k < bytesSegment.Length; k++) { list.Add(bytesSegment[k]); } byte[] data; if (list.Any()) { data = ByteStuffing.ToOriginalForm(list.ToArray()); } else { data = null; } Segment requiredSegment = new Segment(State.Received, data, sequenceNumber, acknowledgment, controlSum); return(requiredSegment); }