Initial commit
This commit is contained in:
commit
0f86b0434b
38 changed files with 2370 additions and 0 deletions
62
LibDgf/GMWare.IO/StringReadingHelper.cs
Normal file
62
LibDgf/GMWare.IO/StringReadingHelper.cs
Normal file
|
@ -0,0 +1,62 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
|
||||
namespace GMWare.IO
|
||||
{
|
||||
/// <summary>
|
||||
/// Collection of methods for reading strings using BinaryReader
|
||||
/// </summary>
|
||||
public static class StringReadingHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Reads a string of a given length.
|
||||
/// </summary>
|
||||
/// <param name="reader">BinaryReader to read from</param>
|
||||
/// <param name="length">Length of string to read</param>
|
||||
/// <returns>The string that was read.</returns>
|
||||
public static string ReadLengthedString(BinaryReader reader, int length)
|
||||
{
|
||||
return new string(reader.ReadChars(length));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads a null terminated string.
|
||||
/// </summary>
|
||||
/// <param name="reader">BinaryReader to read from</param>
|
||||
/// <returns>The string that was read.</returns>
|
||||
public static string ReadNullTerminatedString(BinaryReader reader)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (char ch = reader.ReadChar(); ch != '\0'; ch = reader.ReadChar())
|
||||
{
|
||||
sb.Append(ch);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads a null terminated string from within a fixed size block.
|
||||
/// </summary>
|
||||
/// <param name="reader">BinaryReader to read from</param>
|
||||
/// <param name="blockLen">The length of the fixed size block</param>
|
||||
/// <param name="encoding">The encoding the string is in</param>
|
||||
/// <returns>The string that was read.</returns>
|
||||
public static string ReadNullTerminatedStringFromFixedSizeBlock(BinaryReader reader, int blockLen, Encoding encoding)
|
||||
{
|
||||
byte[] data = reader.ReadBytes(blockLen);
|
||||
string str = encoding.GetString(data);
|
||||
int indNull = str.IndexOf('\0');
|
||||
if (indNull >= 0)
|
||||
{
|
||||
return str.Substring(0, indNull);
|
||||
}
|
||||
else
|
||||
{
|
||||
return str;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue