public static EncodeReal ( IBerOutput output, double value ) : int | ||
output | IBerOutput | |
value | double | |
return | int |
public static byte[] Encode(string format, params object[] args) { var output = new BerMemoryOutput(); var paramIndex = 0; for (int charIndex = 0; charIndex < format.Length; charIndex++) { var ch = format[charIndex]; switch (ch) { case '{': EncodeHeader(output, TypeTags.Sequence, BerDefinitions.IndefiniteLength); break; case '}': output.WriteByte(0); output.WriteByte(0); break; case 'b': { EncodeHeader(output, TypeTags.Boolean, 1); BerEncoding.EncodeBoolean(output, (bool)args[paramIndex++]); break; } case 'i': case 'd': { var value = (int)args[paramIndex++]; var valueLength = BerEncoding.GetIntegerLength(value); EncodeHeader(output, TypeTags.Integer, valueLength); BerEncoding.EncodeInteger(output, value, (int)valueLength); break; } case 'l': case 't': { var value = (long)args[paramIndex++]; var valueLength = BerEncoding.GetLongLength(value); EncodeHeader(output, TypeTags.Integer, valueLength); BerEncoding.EncodeLong(output, value, (int)valueLength); break; } case 's': { var value = (string)args[paramIndex++]; var valueLength = BerEncoding.GetUtf8StringLength(value); EncodeHeader(output, TypeTags.UTF8String, valueLength); BerEncoding.EncodeUtf8String(output, value); break; } case 'y': { var value = (byte[])args[paramIndex++]; var valueLength = value.Length; EncodeHeader(output, TypeTags.OctetString, valueLength); BerEncoding.EncodeByteArray(output, value); break; } case 'f': case 'r': { var value = (double)args[paramIndex++]; var local = new BerMemoryOutput(); var valueLength = BerEncoding.EncodeReal(local, value); EncodeHeader(output, TypeTags.Real, valueLength); output.WriteBytes(local.Memory); break; } case 'o': { var value = (int[])args[paramIndex++]; var local = new BerMemoryOutput(); var valueLength = BerEncoding.EncodeRelativeOid(local, value); EncodeHeader(output, TypeTags.RelativeOid, valueLength); output.WriteBytes(local.Memory); break; } case 'g': { var value = (DateTime)args[paramIndex++]; var local = new BerMemoryOutput(); var valueLength = BerEncoding.EncodeGeneralizedTime(local, value); EncodeHeader(output, TypeTags.GeneralizedTime, valueLength); output.WriteBytes(local.Memory); break; } } } return(output.ToArray()); }