diff --git a/RombaSharp/Features/BaseFeature.cs b/RombaSharp/Features/BaseFeature.cs index bb0ec63c..2e7be328 100644 --- a/RombaSharp/Features/BaseFeature.cs +++ b/RombaSharp/Features/BaseFeature.cs @@ -555,7 +555,7 @@ CREATE TABLE IF NOT EXISTS dat ( if (lowerCaseDats.Contains(input.ToLowerInvariant())) { string fullpath = Path.GetFullPath(datRootDats[lowerCaseDats.IndexOf(input.ToLowerInvariant())]); - string sha1 = Utilities.ByteArrayToString(BaseFile.GetInfo(fullpath, hashes: Hash.SHA1).SHA1); + string sha1 = TextHelper.ByteArrayToString(BaseFile.GetInfo(fullpath, hashes: Hash.SHA1).SHA1); foundDats.Add(sha1, fullpath); } else diff --git a/SabreTools.Core/Tools/DateTimeHelper.cs b/SabreTools.Core/Tools/DateTimeHelper.cs new file mode 100644 index 00000000..5d0e7510 --- /dev/null +++ b/SabreTools.Core/Tools/DateTimeHelper.cs @@ -0,0 +1,33 @@ +using System; + +namespace SabreTools.Core.Tools +{ + public static class DateTimeHelper + { + // + /// Convert .NET DateTime to MS-DOS date format + /// + /// Adapted from 7-zip Source Code: CPP/Windows/TimeUtils.cpp:FileTimeToDosTime + public static long ConvertToMsDosTimeFormat(DateTime dateTime) + { + uint year = (uint)((dateTime.Year - 1980) % 128); + uint mon = (uint)dateTime.Month; + uint day = (uint)dateTime.Day; + uint hour = (uint)dateTime.Hour; + uint min = (uint)dateTime.Minute; + uint sec = (uint)dateTime.Second; + + return (year << 25) | (mon << 21) | (day << 16) | (hour << 11) | (min << 5) | (sec >> 1); + } + + /// + /// Convert MS-DOS date format to .NET DateTime + /// + /// Adapted from 7-zip Source Code: CPP/Windows/TimeUtils.cpp:DosTimeToFileTime + public static DateTime ConvertFromMsDosTimeFormat(uint msDosDateTime) + { + return new DateTime((int)(1980 + (msDosDateTime >> 25)), (int)((msDosDateTime >> 21) & 0xF), (int)((msDosDateTime >> 16) & 0x1F), + (int)((msDosDateTime >> 11) & 0x1F), (int)((msDosDateTime >> 5) & 0x3F), (int)((msDosDateTime & 0x1F) * 2)); + } + } +} diff --git a/SabreTools.Core/Tools/TextHelper.cs b/SabreTools.Core/Tools/TextHelper.cs index 8a5c0ac4..c407ce95 100644 --- a/SabreTools.Core/Tools/TextHelper.cs +++ b/SabreTools.Core/Tools/TextHelper.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -7,6 +8,58 @@ namespace SabreTools.Core.Tools { public static class TextHelper { + #region Conversion + + /// + /// Convert a byte array to a hex string + /// + public static string? ByteArrayToString(byte[]? bytes) + { + // If we get null in, we send null out + if (bytes == null) + return null; + + try + { + string hex = BitConverter.ToString(bytes); + return hex.Replace("-", string.Empty).ToLowerInvariant(); + } + catch + { + return null; + } + } + + /// + /// Convert a hex string to a byte array + /// + public static byte[]? StringToByteArray(string? hex) + { + // If we get null in, we send null out + if (string.IsNullOrWhiteSpace(hex)) + return null; + + try + { + int NumberChars = hex.Length; + byte[] bytes = new byte[NumberChars / 2]; + for (int i = 0; i < NumberChars; i += 2) + { + bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16); + } + + return bytes; + } + catch + { + return null; + } + } + + #endregion + + #region Normalization + /// /// Normalize a string to the WoD standard /// @@ -75,6 +128,8 @@ namespace SabreTools.Core.Tools return new string(input.Where(c => !invalidPath.Contains(c)).ToArray()); } + #endregion + #region Helpers /// diff --git a/SabreTools.Core/Tools/Utilities.cs b/SabreTools.Core/Tools/Utilities.cs index add94037..0afe6d4a 100644 --- a/SabreTools.Core/Tools/Utilities.cs +++ b/SabreTools.Core/Tools/Utilities.cs @@ -1,5 +1,4 @@ -using System; -using System.IO; +using System.IO; namespace SabreTools.Core.Tools { @@ -8,92 +7,6 @@ namespace SabreTools.Core.Tools /// public static class Utilities { - /// - /// Convert a byte array to a hex string - /// - /// Byte array to convert - /// Hex string representing the byte array - /// http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to-hexadecimal-string-and-vice-versa - public static string? ByteArrayToString(byte[]? bytes) - { - // If we get null in, we send null out - if (bytes == null) - return null; - - try - { - string hex = BitConverter.ToString(bytes); - return hex.Replace("-", string.Empty).ToLowerInvariant(); - } - catch - { - return null; - } - } - - /// - /// Convert a hex string to a byte array - /// - /// Hex string to convert - /// Byte array represenging the hex string - /// http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to-hexadecimal-string-and-vice-versa - public static byte[]? StringToByteArray(string? hex) - { - // If we get null in, we send null out - if (string.IsNullOrWhiteSpace(hex)) - return null; - - try - { - int NumberChars = hex.Length; - byte[] bytes = new byte[NumberChars / 2]; - for (int i = 0; i < NumberChars; i += 2) - { - bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16); - } - - return bytes; - } - catch - { - return null; - } - } - - /// - /// Convert .NET DateTime to MS-DOS date format - /// - /// .NET DateTime object to convert - /// UInt32 representing the MS-DOS date - /// - /// Adapted from 7-zip Source Code: CPP/Windows/TimeUtils.cpp:FileTimeToDosTime - /// - public static long ConvertDateTimeToMsDosTimeFormat(DateTime dateTime) - { - uint year = (uint)((dateTime.Year - 1980) % 128); - uint mon = (uint)dateTime.Month; - uint day = (uint)dateTime.Day; - uint hour = (uint)dateTime.Hour; - uint min = (uint)dateTime.Minute; - uint sec = (uint)dateTime.Second; - - return (year << 25) | (mon << 21) | (day << 16) | (hour << 11) | (min << 5) | (sec >> 1); - } - - /// - /// Convert MS-DOS date format to .NET DateTime - /// - /// UInt32 representing the MS-DOS date to convert - /// .NET DateTime object representing the converted date - /// - /// Adapted from 7-zip Source Code: CPP/Windows/TimeUtils.cpp:DosTimeToFileTime - /// - public static DateTime ConvertMsDosTimeFormatToDateTime(uint msDosDateTime) - { - return new DateTime((int)(1980 + (msDosDateTime >> 25)), (int)((msDosDateTime >> 21) & 0xF), (int)((msDosDateTime >> 16) & 0x1F), - (int)((msDosDateTime >> 11) & 0x1F), (int)((msDosDateTime >> 5) & 0x3F), (int)((msDosDateTime & 0x1F) * 2)); - } - /// /// Get a proper romba sub path /// diff --git a/SabreTools.DatItems/Formats/Disk.cs b/SabreTools.DatItems/Formats/Disk.cs index 4422f565..43ca7bfa 100644 --- a/SabreTools.DatItems/Formats/Disk.cs +++ b/SabreTools.DatItems/Formats/Disk.cs @@ -196,8 +196,8 @@ namespace SabreTools.DatItems.Formats public Disk(BaseFile baseFile) { Name = baseFile.Filename; - MD5 = Utilities.ByteArrayToString(baseFile.MD5); - SHA1 = Utilities.ByteArrayToString(baseFile.SHA1); + MD5 = TextHelper.ByteArrayToString(baseFile.MD5); + SHA1 = TextHelper.ByteArrayToString(baseFile.SHA1); ItemType = ItemType.Disk; DupeType = 0x00; @@ -237,8 +237,8 @@ namespace SabreTools.DatItems.Formats { Filename = this.Name, Parent = this.Machine?.Name, - MD5 = Utilities.StringToByteArray(this.MD5), - SHA1 = Utilities.StringToByteArray(this.SHA1), + MD5 = TextHelper.StringToByteArray(this.MD5), + SHA1 = TextHelper.StringToByteArray(this.SHA1), }; } diff --git a/SabreTools.DatItems/Formats/File.cs b/SabreTools.DatItems/Formats/File.cs index ebd021a7..65c455ce 100644 --- a/SabreTools.DatItems/Formats/File.cs +++ b/SabreTools.DatItems/Formats/File.cs @@ -53,8 +53,8 @@ namespace SabreTools.DatItems.Formats [JsonProperty("crc", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("crc")] public string? CRC { - get { return _crc.IsNullOrEmpty() ? null : Utilities.ByteArrayToString(_crc); } - set { _crc = (value == "null" ? Constants.CRCZeroBytes : Utilities.StringToByteArray(TextHelper.NormalizeCRC32(value))); } + get { return _crc.IsNullOrEmpty() ? null : TextHelper.ByteArrayToString(_crc); } + set { _crc = (value == "null" ? Constants.CRCZeroBytes : TextHelper.StringToByteArray(TextHelper.NormalizeCRC32(value))); } } /// @@ -63,8 +63,8 @@ namespace SabreTools.DatItems.Formats [JsonProperty("md5", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("md5")] public string? MD5 { - get { return _md5.IsNullOrEmpty() ? null : Utilities.ByteArrayToString(_md5); } - set { _md5 = Utilities.StringToByteArray(TextHelper.NormalizeMD5(value)); } + get { return _md5.IsNullOrEmpty() ? null : TextHelper.ByteArrayToString(_md5); } + set { _md5 = TextHelper.StringToByteArray(TextHelper.NormalizeMD5(value)); } } /// @@ -73,8 +73,8 @@ namespace SabreTools.DatItems.Formats [JsonProperty("sha1", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("sha1")] public string? SHA1 { - get { return _sha1.IsNullOrEmpty() ? null : Utilities.ByteArrayToString(_sha1); } - set { _sha1 = Utilities.StringToByteArray(TextHelper.NormalizeSHA1(value)); } + get { return _sha1.IsNullOrEmpty() ? null : TextHelper.ByteArrayToString(_sha1); } + set { _sha1 = TextHelper.StringToByteArray(TextHelper.NormalizeSHA1(value)); } } /// @@ -83,8 +83,8 @@ namespace SabreTools.DatItems.Formats [JsonProperty("sha256", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("sha256")] public string? SHA256 { - get { return _sha256.IsNullOrEmpty() ? null : Utilities.ByteArrayToString(_sha256); } - set { _sha256 = Utilities.StringToByteArray(TextHelper.NormalizeSHA256(value)); } + get { return _sha256.IsNullOrEmpty() ? null : TextHelper.ByteArrayToString(_sha256); } + set { _sha256 = TextHelper.StringToByteArray(TextHelper.NormalizeSHA256(value)); } } /// diff --git a/SabreTools.DatItems/Formats/Media.cs b/SabreTools.DatItems/Formats/Media.cs index a2cb91d9..67099139 100644 --- a/SabreTools.DatItems/Formats/Media.cs +++ b/SabreTools.DatItems/Formats/Media.cs @@ -101,10 +101,10 @@ namespace SabreTools.DatItems.Formats public Media(BaseFile baseFile) { Name = baseFile.Filename; - MD5 = Utilities.ByteArrayToString(baseFile.MD5); - SHA1 = Utilities.ByteArrayToString(baseFile.SHA1); - SHA256 = Utilities.ByteArrayToString(baseFile.SHA256); - SpamSum = Utilities.ByteArrayToString(baseFile.SpamSum); + MD5 = TextHelper.ByteArrayToString(baseFile.MD5); + SHA1 = TextHelper.ByteArrayToString(baseFile.SHA1); + SHA256 = TextHelper.ByteArrayToString(baseFile.SHA256); + SpamSum = TextHelper.ByteArrayToString(baseFile.SpamSum); ItemType = ItemType.Media; DupeType = 0x00; @@ -139,10 +139,10 @@ namespace SabreTools.DatItems.Formats { Filename = this.Name, Parent = this.Machine?.Name, - MD5 = Utilities.StringToByteArray(this.MD5), - SHA1 = Utilities.StringToByteArray(this.SHA1), - SHA256 = Utilities.StringToByteArray(this.SHA256), - SpamSum = Utilities.StringToByteArray(this.SpamSum), + MD5 = TextHelper.StringToByteArray(this.MD5), + SHA1 = TextHelper.StringToByteArray(this.SHA1), + SHA256 = TextHelper.StringToByteArray(this.SHA256), + SpamSum = TextHelper.StringToByteArray(this.SpamSum), }; } diff --git a/SabreTools.DatItems/Formats/Rom.cs b/SabreTools.DatItems/Formats/Rom.cs index b34ecdbe..3db85cb3 100644 --- a/SabreTools.DatItems/Formats/Rom.cs +++ b/SabreTools.DatItems/Formats/Rom.cs @@ -481,13 +481,13 @@ namespace SabreTools.DatItems.Formats { Name = baseFile.Filename; Size = baseFile.Size; - CRC = Utilities.ByteArrayToString(baseFile.CRC); - MD5 = Utilities.ByteArrayToString(baseFile.MD5); - SHA1 = Utilities.ByteArrayToString(baseFile.SHA1); - SHA256 = Utilities.ByteArrayToString(baseFile.SHA256); - SHA384 = Utilities.ByteArrayToString(baseFile.SHA384); - SHA512 = Utilities.ByteArrayToString(baseFile.SHA512); - SpamSum = Utilities.ByteArrayToString(baseFile.SpamSum); + CRC = TextHelper.ByteArrayToString(baseFile.CRC); + MD5 = TextHelper.ByteArrayToString(baseFile.MD5); + SHA1 = TextHelper.ByteArrayToString(baseFile.SHA1); + SHA256 = TextHelper.ByteArrayToString(baseFile.SHA256); + SHA384 = TextHelper.ByteArrayToString(baseFile.SHA384); + SHA512 = TextHelper.ByteArrayToString(baseFile.SHA512); + SpamSum = TextHelper.ByteArrayToString(baseFile.SpamSum); ItemType = ItemType.Rom; DupeType = 0x00; @@ -530,13 +530,13 @@ namespace SabreTools.DatItems.Formats Parent = this.Machine?.Name, Date = this.Date, Size = this.Size, - CRC = Utilities.StringToByteArray(this.CRC), - MD5 = Utilities.StringToByteArray(this.MD5), - SHA1 = Utilities.StringToByteArray(this.SHA1), - SHA256 = Utilities.StringToByteArray(this.SHA256), - SHA384 = Utilities.StringToByteArray(this.SHA384), - SHA512 = Utilities.StringToByteArray(this.SHA512), - SpamSum = Utilities.StringToByteArray(this.SpamSum), + CRC = TextHelper.StringToByteArray(this.CRC), + MD5 = TextHelper.StringToByteArray(this.MD5), + SHA1 = TextHelper.StringToByteArray(this.SHA1), + SHA256 = TextHelper.StringToByteArray(this.SHA256), + SHA384 = TextHelper.StringToByteArray(this.SHA384), + SHA512 = TextHelper.StringToByteArray(this.SHA512), + SpamSum = TextHelper.StringToByteArray(this.SpamSum), }; } diff --git a/SabreTools.FileTypes/Archives/GZipArchive.cs b/SabreTools.FileTypes/Archives/GZipArchive.cs index 545ac1c2..eeee4a8f 100644 --- a/SabreTools.FileTypes/Archives/GZipArchive.cs +++ b/SabreTools.FileTypes/Archives/GZipArchive.cs @@ -397,7 +397,7 @@ namespace SabreTools.FileTypes.Archives Size = extractedsize, CRC = headercrc, MD5 = headermd5, - SHA1 = Utilities.StringToByteArray(Path.GetFileNameWithoutExtension(this.Filename)), + SHA1 = TextHelper.StringToByteArray(Path.GetFileNameWithoutExtension(this.Filename)), Parent = Path.GetFileNameWithoutExtension(this.Filename).ToLowerInvariant(), }; @@ -444,7 +444,7 @@ namespace SabreTools.FileTypes.Archives baseFile = GetInfo(inputStream, keepReadOpen: true); // Get the output file name - string outfile = Path.Combine(outDir, Utilities.GetDepotPath(Utilities.ByteArrayToString(baseFile.SHA1), Depth)); + string outfile = Path.Combine(outDir, Utilities.GetDepotPath(TextHelper.ByteArrayToString(baseFile.SHA1), Depth)); // Check to see if the folder needs to be created if (!Directory.Exists(Path.GetDirectoryName(outfile))) diff --git a/SabreTools.FileTypes/Archives/SevenZipArchive.cs b/SabreTools.FileTypes/Archives/SevenZipArchive.cs index 867f2b02..5c9fe9a6 100644 --- a/SabreTools.FileTypes/Archives/SevenZipArchive.cs +++ b/SabreTools.FileTypes/Archives/SevenZipArchive.cs @@ -440,7 +440,7 @@ namespace SabreTools.FileTypes.Archives DateTime dt = DateTime.Now; if (UseDates && !string.IsNullOrWhiteSpace(baseFile.Date) && DateTime.TryParse(baseFile.Date.Replace('\\', '/'), out dt)) { - long msDosDateTime = Utilities.ConvertDateTimeToMsDosTimeFormat(dt); + long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; zipFile.ZipFileOpenWriteStream(false, false, baseFile.Filename.Replace('\\', '/'), istreamSize, 0, out writeStream, ts); } @@ -516,7 +516,7 @@ namespace SabreTools.FileTypes.Archives DateTime dt = DateTime.Now; if (UseDates && !string.IsNullOrWhiteSpace(baseFile.Date) && DateTime.TryParse(baseFile.Date.Replace('\\', '/'), out dt)) { - long msDosDateTime = Utilities.ConvertDateTimeToMsDosTimeFormat(dt); + long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; zipFile.ZipFileOpenWriteStream(false, false, baseFile.Filename.Replace('\\', '/'), istreamSize, 0, out writeStream, ts); } @@ -656,7 +656,7 @@ namespace SabreTools.FileTypes.Archives DateTime dt = DateTime.Now; if (UseDates && !string.IsNullOrWhiteSpace(baseFiles[index].Date) && DateTime.TryParse(baseFiles[index].Date.Replace('\\', '/'), out dt)) { - long msDosDateTime = Utilities.ConvertDateTimeToMsDosTimeFormat(dt); + long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; zipFile.ZipFileOpenWriteStream(false, false, baseFiles[index].Filename.Replace('\\', '/'), istreamSize, 0, out writeStream, ts); } @@ -740,7 +740,7 @@ namespace SabreTools.FileTypes.Archives DateTime dt = DateTime.Now; if (UseDates && !string.IsNullOrWhiteSpace(baseFiles[-index - 1].Date) && DateTime.TryParse(baseFiles[-index - 1].Date.Replace('\\', '/'), out dt)) { - long msDosDateTime = Utilities.ConvertDateTimeToMsDosTimeFormat(dt); + long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; zipFile.ZipFileOpenWriteStream(false, false, baseFiles[-index - 1].Filename.Replace('\\', '/'), istreamSize, 0, out writeStream, ts); } diff --git a/SabreTools.FileTypes/Archives/XZArchive.cs b/SabreTools.FileTypes/Archives/XZArchive.cs index e58c6a2d..667ad5b7 100644 --- a/SabreTools.FileTypes/Archives/XZArchive.cs +++ b/SabreTools.FileTypes/Archives/XZArchive.cs @@ -289,7 +289,7 @@ namespace SabreTools.FileTypes.Archives BaseFile baseFile = new() { Filename = Path.GetFileNameWithoutExtension(this.Filename).ToLowerInvariant(), - SHA1 = Utilities.StringToByteArray(Path.GetFileNameWithoutExtension(this.Filename)), + SHA1 = TextHelper.StringToByteArray(Path.GetFileNameWithoutExtension(this.Filename)), Parent = Path.GetFileNameWithoutExtension(this.Filename).ToLowerInvariant(), }; @@ -336,7 +336,7 @@ namespace SabreTools.FileTypes.Archives baseFile = GetInfo(inputStream, keepReadOpen: true); // Get the output file name - string outfile = Path.Combine(outDir, Utilities.GetDepotPath(Utilities.ByteArrayToString(baseFile.SHA1), Depth)); + string outfile = Path.Combine(outDir, Utilities.GetDepotPath(TextHelper.ByteArrayToString(baseFile.SHA1), Depth)); outfile = outfile.Replace(".gz", ".xz"); // Check to see if the folder needs to be created diff --git a/SabreTools.FileTypes/Archives/ZipArchive.cs b/SabreTools.FileTypes/Archives/ZipArchive.cs index 7a6fd01c..4a194739 100644 --- a/SabreTools.FileTypes/Archives/ZipArchive.cs +++ b/SabreTools.FileTypes/Archives/ZipArchive.cs @@ -453,7 +453,7 @@ namespace SabreTools.FileTypes.Archives DateTime dt = DateTime.Now; if (UseDates && !string.IsNullOrWhiteSpace(baseFile.Date) && DateTime.TryParse(baseFile.Date.Replace('\\', '/'), out dt)) { - long msDosDateTime = Utilities.ConvertDateTimeToMsDosTimeFormat(dt); + long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; zipFile.ZipFileOpenWriteStream(false, false, baseFile.Filename.Replace('\\', '/'), istreamSize, (ushort)CompressionMethod.Deflated, out writeStream, ts); } @@ -527,7 +527,7 @@ namespace SabreTools.FileTypes.Archives DateTime dt = DateTime.Now; if (UseDates && !string.IsNullOrWhiteSpace(baseFile.Date) && DateTime.TryParse(baseFile.Date.Replace('\\', '/'), out dt)) { - long msDosDateTime = Utilities.ConvertDateTimeToMsDosTimeFormat(dt); + long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; zipFile.ZipFileOpenWriteStream(false, false, baseFile.Filename.Replace('\\', '/'), istreamSize, (ushort)CompressionMethod.Deflated, out writeStream, ts); } @@ -669,7 +669,7 @@ namespace SabreTools.FileTypes.Archives DateTime dt = DateTime.Now; if (UseDates && !string.IsNullOrWhiteSpace(baseFiles[index].Date) && DateTime.TryParse(baseFiles[index].Date.Replace('\\', '/'), out dt)) { - long msDosDateTime = Utilities.ConvertDateTimeToMsDosTimeFormat(dt); + long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; zipFile.ZipFileOpenWriteStream(false, false, baseFiles[index].Filename.Replace('\\', '/'), istreamSize, (ushort)CompressionMethod.Deflated, out writeStream, ts); } diff --git a/SabreTools.Test/FileTypes/BaseFileTests.cs b/SabreTools.Test/FileTypes/BaseFileTests.cs index 481f8f9d..d815418a 100644 --- a/SabreTools.Test/FileTypes/BaseFileTests.cs +++ b/SabreTools.Test/FileTypes/BaseFileTests.cs @@ -31,12 +31,12 @@ namespace SabreTools.Test.FileTypes var baseFile = BaseFile.GetInfo(filename, hashes: Hash.All); // Extract all the hashes to string - string actualCrc = Utilities.ByteArrayToString(baseFile.CRC); - string actualMd5 = Utilities.ByteArrayToString(baseFile.MD5); - string actualSha1 = Utilities.ByteArrayToString(baseFile.SHA1); - string actualSha256 = Utilities.ByteArrayToString(baseFile.SHA256); - string actualSha384 = Utilities.ByteArrayToString(baseFile.SHA384); - string actualSha512 = Utilities.ByteArrayToString(baseFile.SHA512); + string actualCrc = TextHelper.ByteArrayToString(baseFile.CRC); + string actualMd5 = TextHelper.ByteArrayToString(baseFile.MD5); + string actualSha1 = TextHelper.ByteArrayToString(baseFile.SHA1); + string actualSha256 = TextHelper.ByteArrayToString(baseFile.SHA256); + string actualSha384 = TextHelper.ByteArrayToString(baseFile.SHA384); + string actualSha512 = TextHelper.ByteArrayToString(baseFile.SHA512); string actualSpamSum = Encoding.UTF8.GetString(baseFile.SpamSum); // Verify all of the hashes match diff --git a/SabreTools/Features/Extract.cs b/SabreTools/Features/Extract.cs index 9ce437fc..abc532d5 100644 --- a/SabreTools/Features/Extract.cs +++ b/SabreTools/Features/Extract.cs @@ -93,7 +93,7 @@ The following systems have headers that this program can work with: using var fs = File.OpenRead(file); byte[] hbin = new byte[int.Parse(rule.StartOffset)]; fs.Read(hbin, 0, int.Parse(rule.StartOffset)); - hstr = Utilities.ByteArrayToString(hbin); + hstr = TextHelper.ByteArrayToString(hbin); } catch { @@ -112,7 +112,7 @@ The following systems have headers that this program can work with: if (!nostore) { BaseFile baseFile = BaseFile.GetInfo(newfile, hashes: Hash.SHA1, asFiles: TreatAsFile.NonArchive); - AddHeaderToDatabase(hstr, Utilities.ByteArrayToString(baseFile.SHA1), rule.SourceFile); + AddHeaderToDatabase(hstr, TextHelper.ByteArrayToString(baseFile.SHA1), rule.SourceFile); } return true; diff --git a/SabreTools/Features/Restore.cs b/SabreTools/Features/Restore.cs index 8aef3c0e..c148d85d 100644 --- a/SabreTools/Features/Restore.cs +++ b/SabreTools/Features/Restore.cs @@ -71,7 +71,7 @@ The following systems have headers that this program can work with: BaseFile baseFile = BaseFile.GetInfo(file, hashes: Hash.SHA1, asFiles: TreatAsFile.NonArchive); // Retrieve a list of all related headers from the database - List headers = RetrieveHeadersFromDatabase(Utilities.ByteArrayToString(baseFile.SHA1)); + List headers = RetrieveHeadersFromDatabase(TextHelper.ByteArrayToString(baseFile.SHA1)); // If we have nothing retrieved, we return false if (headers.Count == 0) @@ -82,7 +82,7 @@ The following systems have headers that this program can work with: { string outputFile = (string.IsNullOrWhiteSpace(outDir) ? $"{Path.GetFullPath(file)}.new" : Path.Combine(outDir, Path.GetFileName(file))) + i; logger.User($"Creating reheadered file: {outputFile}"); - AppendBytes(file, outputFile, Utilities.StringToByteArray(headers[i]), null); + AppendBytes(file, outputFile, TextHelper.StringToByteArray(headers[i]), null); logger.User("Reheadered file created!"); }