public override void WriteValue(EndianWriter writer) { writer.Seek(ValueAddress, SeekOrigin.Begin); writer.WriteStringFixedLength(Value, Length, '\0'); IsDirty = false; }
//null header indicates the data should be written as-is public static void WriteRiffData(Stream output, IFormatHeader header, byte[] data) { using (var sw = new EndianWriter(output, ByteOrder.LittleEndian)) { if (header == null) { sw.Write(data); return; } sw.WriteStringFixedLength("RIFF"); sw.Write(data.Length + header.Length + 20); //20 is the combined size of strings length ints sw.WriteStringFixedLength("WAVE"); sw.WriteStringFixedLength("fmt "); sw.Write(header.Length); sw.Write(header.GetBytes()); sw.WriteStringFixedLength("data"); sw.Write(data.Length); sw.Write(data); } }
public override void WriteValue(EndianWriter writer) { writer.Seek(ValueAddress, SeekOrigin.Begin); if (FieldDefinition.ValueType == MetaValueType.StringId) { throw new NotImplementedException(); } else { writer.WriteStringFixedLength(Value, Length); } IsDirty = false; }
public void ReadStrings01(ByteOrder order, bool dynamicRead) { var value1 = "Length_Prefixed_String_#01!"; var value2 = "Fixed_Length_String_#01!"; var value3 = "Null_Terminated_String_#01!"; using (var stream = new MemoryStream(new byte[500])) using (var reader = new EndianReader(stream, order)) using (var writer = new EndianWriter(stream, order)) { reader.DynamicReadEnabled = dynamicRead; writer.Write(value1); stream.Position = 0x20; writer.WriteStringFixedLength(value2, 32); stream.Position = 0x40; writer.WriteStringNullTerminated(value3); stream.Position = 0x60; writer.Write(value1, ByteOrder.LittleEndian); stream.Position = 0x80; writer.Write(value1, ByteOrder.BigEndian); stream.Position = 0; var obj = reader.ReadObject <DataClass05>(); Assert.AreEqual(value1, obj.Property1); Assert.AreEqual(value2, obj.Property2); Assert.AreEqual(32, obj.Property3.Length); Assert.IsTrue(obj.Property3.StartsWith(value2)); Assert.AreEqual(value3, obj.Property4); Assert.AreEqual(value3, obj.Property5); Assert.AreEqual(value1, obj.Property6); Assert.AreEqual(value1, obj.Property7); } }
public void FixedLength(ByteOrder order) { var value1 = "Fixed_Length_String_#01!"; using (var stream = new MemoryStream(new byte[32])) using (var reader = new EndianReader(stream, order)) using (var writer = new EndianWriter(stream, order)) { writer.WriteStringFixedLength(value1, 32); Assert.AreEqual(32, stream.Position); stream.Position = 0; var value2 = reader.ReadString(32, true); Assert.AreEqual(32, stream.Position); Assert.AreEqual(value1, value2); stream.Position = 0; value2 = reader.ReadString(32, false); Assert.AreEqual(32, value2.Length); Assert.IsTrue(value2.StartsWith(value1)); } }