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;
}