public Asn1TreeNode(Asn1Lite value) { Value = value; Path = value.Path; String[] tokens = Path.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); MyIndex = String.IsNullOrEmpty(Path) ? 0 : Convert.ToInt32(tokens[tokens.Length - 1]); Value.PropertyChanged += valuePropertyChanged; }
public void AddChild(Asn1Lite value, Boolean forcePathUpdate = false) { var node = new Asn1TreeNode(value) { Parent = this }; Children.Add(node); if (forcePathUpdate) { notifySizeChanged(node, node.Value.TagLength); updatePath(node, Path, Children.Count - 1); } Value.IsContainer = true; }
void updateIntValue(Asn1Lite node, Boolean forceInteger) { if (forceInteger) { Byte[] raw = _dataSource.RawData.Skip(node.PayloadStartOffset).Take(node.PayloadLength).ToArray(); node.ExplicitValue = new BigInteger(raw.Reverse().ToArray()).ToString(); } else { Byte[] raw = _dataSource.RawData.Skip(node.PayloadStartOffset).Take(node.PayloadLength).ToArray(); node.ExplicitValue = AsnFormatter.BinaryToString( raw, EncodingType.HexRaw, EncodingFormat.NOCRLF ); } }