/// <summary> /// Convert from an array /// </summary> /// <param name="data">The data array</param> public override void FromArray(byte[] data) { IDataStringParser convert = (IDataStringParser)CreateConverter(); BinaryEncoding encoding = new BinaryEncoding(); try { convert.FromString(encoding.GetString(data), this, GetLogger()); } catch (Exception ex) { GetLogger().LogException(ex); } }
/// <summary> /// Converts key to an array /// </summary> /// <returns>The data</returns> public override byte[] ToArray() { IDataStringParser convert = (IDataStringParser)CreateConverter(); BinaryEncoding encoding = new BinaryEncoding(); byte[] ret = new byte[0]; try { ret = encoding.GetBytes(convert.ToString(this, GetLogger())); } catch (Exception ex) { GetLogger().LogException(ex); } return ret; }
/// <summary> /// Set the data to difference /// </summary> /// <param name="left">The left data</param> /// <param name="right">The right data</param> public void SetData(DataNode left, DataNode right) { _left = left.ToArray(); _right = right.ToArray(); BinaryEncoding enc = new BinaryEncoding(true); string leftStr = left.ToDataString(); string rightStr = right.ToDataString(); leftStr = leftStr.Replace('\0', ' '); rightStr = rightStr.Replace('\0', ' '); _leftlines = SplitLines(leftStr); _rightlines = SplitLines(rightStr); richTextBoxLeft.Lines = _leftlines; richTextBoxRight.Lines = _rightlines; hexEditorControlLeft.Bytes = _left; hexEditorControlRight.Bytes = _right; }
private void DoFind(InlineSearchControl.SearchEventArgs e, bool next) { bool found = false; if (radioButtonHex.Checked) { byte[] data; if (e.Data != null) { data = e.Data; } else { data = new BinaryEncoding().GetBytes(e.Text); } found = hexEditorControl.FindAndSelect(data, next); } else { string s; if (e.Text != null) { s = e.Text; } else { s = new BinaryEncoding().GetString(e.Data); } found = textEditorControl.FindAndSelect(s, next); } if (!found) { MessageBox.Show(this, CANAPE.Properties.Resources.BinaryDataEditorControl_NoMatch, CANAPE.Properties.Resources.BinaryDataEditorControl_NoMatchCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Converts encoding to an encoding object /// </summary> /// <param name="encoding"></param> /// <returns></returns> protected static Encoding GetEncodingFromType(FilterStringEncoding encoding) { Encoding ret; switch (encoding) { case FilterStringEncoding.ASCII: ret = new BinaryEncoding(); break; case FilterStringEncoding.UTF16_BE: ret = new UnicodeEncoding(true, false); break; case FilterStringEncoding.UTF16_LE: ret = new UnicodeEncoding(false, false); break; case FilterStringEncoding.UTF32_BE: ret = new UTF32Encoding(true, false); break; case FilterStringEncoding.UTF32_LE: ret = new UTF32Encoding(false, false); break; case FilterStringEncoding.UTF8: ret = new UTF8Encoding(); break; case FilterStringEncoding.UTF7: ret = new UTF7Encoding(); break; default: throw new ArgumentException(Properties.Resources.StringDataFrameFilterFactory_GetEncodigFromTypeException); } return ret; }
private static void WriteStringPart(string value, DataWriter writer, Dictionary<string, int> stringCache) { Encoding encoding = new BinaryEncoding(); if (String.IsNullOrEmpty(value) || (value == ".")) { writer.Write(0); } else { if (stringCache.ContainsKey(value)) { ushort pos = (ushort)(0xC000 | stringCache[value]); writer.WriteUInt16(pos, false); } else { string[] values = value.Split(new[] { '.' }, 2, StringSplitOptions.RemoveEmptyEntries); if (values[0].Length > 63) { throw new InvalidDataException("DNS names components cannot be longer than 63 characters"); } long currPos = writer.GetStream().Position; writer.Write((byte)(values[0].Length & 0x3F)); writer.Write(values[0]); stringCache.Add(value, (int)currPos); if (values.Length > 1) { WriteStringPart(values[1], writer, stringCache); } else { WriteStringPart(null, writer, stringCache); } } } }
private static string ReadString(byte[] data, DataReader reader) { Encoding encoding = new BinaryEncoding(); StringBuilder name = new StringBuilder(); int len = reader.ReadByte(); while (len != 0) { if ((len & 0xC0) != 0) { int ofs = (len & ~0xC0) << 8; ofs |= reader.ReadByte(); MemoryStream stm = new MemoryStream(data); stm.Position = ofs; name.Append(ReadString(data, new DataReader(stm))); break; } else { name.Append(reader.Read(len)).Append("."); } len = reader.ReadByte(); } return name.ToString(); }