1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using System;
- using System.Globalization;
- using System.IO;
- using System.Linq;
- using System.Text;
- namespace IsoFilePatcher.Iso9660
- {
- internal static class ExtensionsMethods
- {
- public static string ReadString(this BinaryReader br, int len, Encoding encoding = null)
- {
- var buf = br.ReadBytes(len);
- return (encoding ?? Encoding.ASCII).GetString(buf);
- }
- public static uint ReadUInt32LsbMsb(this BinaryReader br)
- {
- var a = br.ReadUInt32();
- var b = br.ReadUInt32();
- return BitConverter.IsLittleEndian ? a : b;
- }
- public static ushort ReadUInt16LsbMsb(this BinaryReader br)
- {
- var a = br.ReadUInt16();
- var b = br.ReadUInt16();
- return BitConverter.IsLittleEndian ? a : b;
- }
- public static DateTime ReadDecDateTime(this BinaryReader br)
- {
- var str = br.ReadString(16);
- var tz = br.ReadByte();
- if (str[0] == '\0' || str.All(p => p == '0')) return new DateTime();
- var dt = DateTime.ParseExact(str, "yyyyMMddHHmmssff", CultureInfo.InvariantCulture);
- return dt;
- }
- public static DateTime ReadFileRecordDate(this BinaryReader br)
- {
- var year = br.ReadByte();
- var mon = br.ReadByte();
- var day = br.ReadByte();
- var hour = br.ReadByte();
- var min = br.ReadByte();
- var sec = br.ReadByte();
- var tz = br.ReadByte();
- var dt = new DateTime(year + 1900, mon, day, hour, min, sec);
- return dt;
- }
- public static string ReadBytePrefixString(this BinaryReader br, Encoding encoding = null)
- {
- return (encoding ?? Encoding.ASCII).GetString(br.ReadBytes(br.ReadByte()));
- }
- }
- }
|