override protected void pack() { List <byte> data = new List <byte>(); oscString oAddress = this.address; oscDateTime oTimestamp = this.timestamp; addBytes(data, oAddress.pack()); padNull(data); addBytes(data, oTimestamp.pack()); // fixed point, 8 bytes padNull(data); foreach (OSCPacket oscPacket in this.Values) { if (oscPacket != null) { byte[] bs = oscPacket.BinaryData; oscInt len = bs.Length; addBytes(data, len.pack()); addBytes(data, bs); } else { // TODO } } this.binaryData = (byte[])data.ToArray(); }
public static oscString unpack(byte[] bytes, ref int start) { int count = 0; for (int index = start; bytes[index] != 0; index++, count++) { ; } oscString s = Encoding.UTF8.GetString(bytes, start, count); start += count + 1; start = (start + 3) / 4 * 4; return(s); }
/// <summary>Packs OSC address, tagstring, and values into a properly formatted OSC packet.</summary> override protected void pack() { List <byte> data = new List <byte>(); oscString oAddress = this.address; oscString oTypeTag = this.typeTag; addBytes(data, oAddress.pack()); padNull(data); addBytes(data, oTypeTag.pack()); padNull(data); foreach (OSCData item in values) { addBytes(data, item.pack()); padNull(data); } this.binaryData = (byte[])data.ToArray(); }