public void WriteString(Encoding encoding, StringBinaryFormat format, string value, int fixedLength = -1) { switch (format) { case StringBinaryFormat.NullTerminated: WriteStringNullTerminated(encoding, value); break; case StringBinaryFormat.FixedLength: WriteStringFixedLength(encoding, value, fixedLength); break; case StringBinaryFormat.PrefixedLength8: WriteStringPrefixedLength8(encoding, value); break; case StringBinaryFormat.PrefixedLength16: WriteStringPrefixedLength16(encoding, value); break; case StringBinaryFormat.PrefixedLength32: WriteStringPrefixedLength32(encoding, value); break; case StringBinaryFormat.PrefixedLength64: WriteStringPrefixedLength64(encoding, value); break; default: throw new ArgumentException("Unknown string format", nameof(format)); } }
public void WriteStringArray(Encoding encoding, StringBinaryFormat format, string[] values, int fixedLength = -1) { for (int i = 0; i < values.Length; i++) { WriteString(encoding, format, values[i], fixedLength); } }
public string[] ReadStrings(int count, StringBinaryFormat format, int fixedLength = -1) { string[] value = new string[count]; for (int i = 0; i < value.Length; i++) { value[i] = ReadString(format, fixedLength); } return(value); }
public string ReadStringOffset(StringBinaryFormat format = StringBinaryFormat.NullTerminated, int fixedLength = -1) { var offset = ReadInt32(); if (offset == 0) { return(null); } return(ReadStringAtOffset(offset, format, fixedLength)); }
public string ReadStringAtOffset(long offset, StringBinaryFormat format, int fixedLength = -1) { if (offset == 0) { return(null); } string str = null; ReadAtOffset(offset, () => str = ReadString(format, fixedLength)); return(str); }
public string ReadString(StringBinaryFormat format, int fixedLength = -1) { mByteBuffer.Clear(); switch (format) { case StringBinaryFormat.NullTerminated: { byte b; while ((b = ReadByte()) != 0) { mByteBuffer.Add(b); } } break; case StringBinaryFormat.FixedLength: { if (fixedLength == -1) { throw new ArgumentException("Invalid fixed length specified"); } byte b; for (int i = 0; i < fixedLength; i++) { b = ReadByte(); if (b != 0) { mByteBuffer.Add(b); } } } break; case StringBinaryFormat.PrefixedLength8: { byte length = ReadByte(); for (int i = 0; i < length; i++) { mByteBuffer.Add(ReadByte()); } } break; case StringBinaryFormat.PrefixedLength16: { ushort length = ReadUInt16(); for (int i = 0; i < length; i++) { mByteBuffer.Add(ReadByte()); } } break; case StringBinaryFormat.PrefixedLength32: { uint length = ReadUInt32(); for (int i = 0; i < length; i++) { mByteBuffer.Add(ReadByte()); } } break; default: throw new ArgumentException("Unknown string format", nameof(format)); } return(mEncoding.GetString(mByteBuffer.ToArray())); }
public void WriteStringArrayOffset(Encoding encoding, StringBinaryFormat format, string[] value, int fixedLength = -1, int alignment = 0) { mCmdQueue.Enqueue(new WriteOffsetCmd(Position, OffsetHandler.OffsetOrigin, alignment, value, value, false, (w, v) => w.WriteStringArray(encoding, format, ( string[] )v, fixedLength))); WriteOffsetValue(PLACEHOLDER_OFFSET); }
public void Write(string value, StringBinaryFormat format, int fixedLength = -1) { switch (format) { case StringBinaryFormat.NullTerminated: { Write(mEncoding.GetBytes(value)); for (int i = 0; i < mEncoding.GetMaxByteCount(1); i++) { Write((byte)0); } } break; case StringBinaryFormat.FixedLength: { if (fixedLength == -1) { throw new ArgumentException("Fixed length must be provided if format is set to fixed length", nameof(fixedLength)); } var bytes = mEncoding.GetBytes(value); if (bytes.Length > fixedLength) { throw new ArgumentException("Provided string is longer than fixed length", nameof(value)); } Write(bytes); fixedLength -= bytes.Length; while (fixedLength-- > 0) { Write((byte)0); } } break; case StringBinaryFormat.PrefixedLength8: { Write((byte)value.Length); Write(mEncoding.GetBytes(value)); } break; case StringBinaryFormat.PrefixedLength16: { Write((ushort)value.Length); Write(mEncoding.GetBytes(value)); } break; case StringBinaryFormat.PrefixedLength32: { Write((uint)value.Length); Write(mEncoding.GetBytes(value)); } break; default: throw new ArgumentException("Invalid format specified", nameof(format)); } }
public void WriteString(string value, StringBinaryFormat format, int fixedLength = -1) => Write(value, format, fixedLength);
public void WriteStringArray(StringBinaryFormat format, string[] values, int fixedLength = -1) => WriteStringArray(Encoding, format, values, fixedLength);
public void WriteString(StringBinaryFormat format, string value, int fixedLength = -1) => WriteString(Encoding, format, value, fixedLength);
public string[] ReadStringListAtOffset(long offset, int count, StringBinaryFormat format, int fixedLength = -1) { string[] str = null; ReadAtOffset(offset, () => str = ReadStrings(count, format, fixedLength)); return(str); }