예제 #1
0
    public void Emit(ref SpanBuffer <byte> buf)
    {
        string name = this.Name.ToUpperInvariant();

        if (name.Length < 4)
        {
            int pad = 4 - name.Length;
            name = name + ' '._MakeCharArray(pad);
        }

        var nameBuf = name.ToUpperInvariant()._GetBytes_Ascii();

        if (nameBuf.Length != 4)
        {
            throw new CoresLibException("nameBuf.Length != 4");
        }

        string dataStr = Str.Base64ToSafe64(Str.Base64Encode(this.Data));
        var    dataBuf = dataStr._GetBytes_Ascii();

        int dataSize = dataBuf.Length;

        string dataSizeStr     = dataSize.ToString("0000000000");
        var    dataSizeStrData = dataSizeStr._GetBytes_Ascii();

        buf.Write(nameBuf);
        buf.Write(dataSizeStrData);
        buf.Write(dataBuf);
    }