diff --git a/SabreTools.IO/Extensions/ByteArrayExtensions.cs b/SabreTools.IO/Extensions/ByteArrayExtensions.cs index 0738165..f40ee2d 100644 --- a/SabreTools.IO/Extensions/ByteArrayExtensions.cs +++ b/SabreTools.IO/Extensions/ByteArrayExtensions.cs @@ -59,6 +59,36 @@ namespace SabreTools.IO.Extensions } } + /// + /// Read string data from the source + /// + /// Number of characters needed to be a valid string, default 5 + /// String list containing the requested data, null on error + public static List? ReadStringsFrom(this byte[]? input, int charLimit = 5) + { + // Validate the data + if (input == null) + return null; + + // Check for ASCII strings + var asciiStrings = input.ReadStringsWithEncoding(charLimit, Encoding.ASCII); + + // Check for UTF-8 strings + // We are limiting the check for Unicode characters with a second byte of 0x00 for now + var utf8Strings = input.ReadStringsWithEncoding(charLimit, Encoding.UTF8); + + // Check for Unicode strings + // We are limiting the check for Unicode characters with a second byte of 0x00 for now + var unicodeStrings = input.ReadStringsWithEncoding(charLimit, Encoding.Unicode); + + // Ignore duplicate strings across encodings + List sourceStrings = [.. asciiStrings, .. utf8Strings, .. unicodeStrings]; + + // Sort the strings and return + sourceStrings.Sort(); + return sourceStrings; + } + /// /// Read string data from the source with an encoding ///