public static string ReadChars(BinaryReader binaryReader, ImageFileEntry imageFileEntry) { if (imageFileEntry.NumberOfValue <= 4) { var bytes = new[] { (byte)(imageFileEntry.ValuePointer >> 0 & 0xFF), (byte)(imageFileEntry.ValuePointer >> 8 & 0xFF), (byte)(imageFileEntry.ValuePointer >> 16 & 0xFF), (byte)(imageFileEntry.ValuePointer >> 24 & 0xFF), }; return(imageFileEntry.NumberOfValue == 4u && bytes[3] != 0 ? Encoding.ASCII.GetString(bytes, 0, (int)imageFileEntry.NumberOfValue) : Encoding.ASCII.GetString(bytes, 0, (int)imageFileEntry.NumberOfValue - 1)); } if (binaryReader.BaseStream.Position != imageFileEntry.ValuePointer) { binaryReader.BaseStream.Seek(imageFileEntry.ValuePointer, SeekOrigin.Begin); } //var data = new byte[imageFileEntry.NumberOfValue]; //for (var i = 0; i < imageFileEntry.NumberOfValue; i++) // data[i] = binaryReader.ReadByte(); //return data[imageFileEntry.NumberOfValue - 1] != 0 // ? Encoding.ASCII.GetString(data, 0, (int)imageFileEntry.NumberOfValue) // : Encoding.ASCII.GetString(data, 0, (int)imageFileEntry.NumberOfValue - 1); var builder = new StringBuilder(); for (var i = 0; i < imageFileEntry.NumberOfValue; i++) { var us = binaryReader.ReadByte(); builder.Append((char)us); } var lastPosition = builder.Length - 1; if (builder[lastPosition] == 0) { builder.Remove(lastPosition, 1); } return(builder.ToString()); }
public static byte[] ReadBytes(BinaryReader binaryReader, ImageFileEntry imageFileEntry) { var bytes = new byte[imageFileEntry.NumberOfValue]; if (binaryReader.BaseStream.Position != imageFileEntry.ValuePointer) { binaryReader.BaseStream.Seek(imageFileEntry.ValuePointer, SeekOrigin.Begin); } for (var j = 0; j < imageFileEntry.NumberOfValue; j++) { var us = binaryReader.ReadByte(); bytes[j] = us; } return(bytes); }
public static UInt32[] ReadUInts(BinaryReader binaryReader, ImageFileEntry imageFileEntry) { var uints = new UInt32[imageFileEntry.NumberOfValue]; if (binaryReader.BaseStream.Position != imageFileEntry.ValuePointer) { binaryReader.BaseStream.Seek(imageFileEntry.ValuePointer, SeekOrigin.Begin); } for (var j = 0; j < imageFileEntry.NumberOfValue; j++) { var us = binaryReader.ReadUInt32(); uints[j] = us; } return(uints); }
public WhiteBalance(BinaryReader binaryReader, ImageFileEntry imageFileEntry) { if (binaryReader.BaseStream.Position != imageFileEntry.ValuePointer) { binaryReader.BaseStream.Seek(imageFileEntry.ValuePointer, SeekOrigin.Begin); } var ar = 0; var length = binaryReader.ReadUInt16(); Console.WriteLine("0x{0:X4} Len = {1} Length", ar, length); ar += 2; for (var i = 0; i < 6; i++) { var v1 = binaryReader.ReadUInt16(); var v2 = binaryReader.ReadUInt16(); var v3 = binaryReader.ReadUInt16(); var v4 = binaryReader.ReadUInt16(); Console.WriteLine("0x{0:X4} {1}: [{2}, {3}, {4}, {5}]", ar, i, v1, v2, v3, v4); ar += 8; } //var eob = binaryReader.ReadUInt16(); //Console.WriteLine("0x{0:X4} EOB = {1}", ar, eob); //ar += 2; //for (var i = 0; i < 10; i++) //{ // var x1 = binaryReader.ReadUInt16(); // var v1 = binaryReader.ReadUInt16(); // var v2 = binaryReader.ReadUInt16(); // var v3 = binaryReader.ReadUInt16(); // var v4 = binaryReader.ReadUInt16(); // Console.WriteLine("0x{0:X4} {1}: [{2}, {3}, {4}, {5}]", ar, x1, v1, v2, v3, v4); // ar += 10; //} for (var i = ar; i < imageFileEntry.NumberOfValue; i++) { Console.WriteLine("0x{0:X4} : {1}, ", ar, binaryReader.ReadUInt16()); ar += 2; } Console.WriteLine(); }
public ImageFileDirectory(BinaryReader binaryReader) { // var dirStart = binaryReader.BaseStream.Position; var length = binaryReader.ReadUInt16(); Entries = new ImageFileEntry[length]; for (var i = 0; i < length; i++) { Entries[i] = new ImageFileEntry(binaryReader); } var next = binaryReader.ReadUInt32(); NextEntry = next; //if (next == 0) next = (uint)(binaryReader.BaseStream.Length + 1); //Console.WriteLine($"### Directory {length}, [0x{dirStart:X8} - 0x{next - 1:X8}]"); //var heapStart = binaryReader.BaseStream.Position; //Console.WriteLine($" Heap [0x{heapStart:X8} - 0x{next - 1:X8}]"); }
// private readonly byte[] heap; public ImageFileDirectory(ushort length) { Entries = new ImageFileEntry[length]; }