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
///