private static int EncodeSubID()

in Source/Tx.Network/Snmp/Asn1EncoderExtensions.cs [448:481]


        private static int EncodeSubID(uint subid, byte[] data, int offset)
        {
            if (subid < 0x80u)
            { // Size = 1
                data[offset++] = (byte)subid;
            }
            else if (subid < 0x4000u)
            { // Size = 2
                data[offset++] = (byte)((subid >> 7) | 0x80);
                data[offset++] = (byte)(subid & 0x7F);
            }
            else if (subid < 0x200000u)
            { // Size = 3
                data[offset++] = (byte)((subid >> 14) | 0x80);
                data[offset++] = (byte)(((subid >> 7) & 0x7F) | 0x80);
                data[offset++] = (byte)(subid & 0x7F);
            }
            else if (subid < 0x10000000u)
            { // Size = 4
                data[offset++] = (byte)((subid >> 21) | 0x80);
                data[offset++] = (byte)(((subid >> 14) & 0x7F) | 0x80);
                data[offset++] = (byte)(((subid >> 7) & 0x7F) | 0x80);
                data[offset++] = (byte)(subid & 0x7F);
            }
            else
            { // Size = 5
                data[offset++] = (byte)((subid >> 28) | 0x80);
                data[offset++] = (byte)(((subid >> 21) & 0x7F) | 0x80);
                data[offset++] = (byte)(((subid >> 14) & 0x7F) | 0x80);
                data[offset++] = (byte)(((subid >> 7) & 0x7F) | 0x80);
                data[offset++] = (byte)(subid & 0x7F);
            }
            return offset;
        }