public bool Identify(string filename) { using (var br = new BinaryReaderX(File.OpenRead(filename))) { if (br.BaseStream.Length < 4) { return(false); } br.BaseStream.Position = 2; var crc16 = br.ReadUInt16(); if (br.BaseStream.Length < 0x20) { return(false); } if (br.BaseStream.Length < 0x820) { return(false); } br.BaseStream.Position = 0x20; try { return(Crc16.Create(br.ReadBytes(0x820)) == crc16); } catch (Exception) { } return(false); } }
public void X25Compute_Successful() { var crc = Crc16.Create(Crc16Formula.X25); var hash = BinaryPrimitives.ReadInt16BigEndian(crc.Compute(_check)) & 0xFFFF; Assert.AreEqual(_x25Result, hash); }
public void Save(string filename) { using (var bw = new BinaryWriterX(File.Create(filename))) { List <byte> result = new List <byte>(); var settings = new ImageSettings { Width = 32, Height = 32, BitPerIndex = BitLength.Bit4 }; var palette = Common.CreatePalette(bmps[0]); var paletteB = Common.EncodePalette(palette, Format.BGR555); var tileData = Common.Save(bmps[0], settings, palette); result.AddRange(tileData); result.AddRange(paletteB); result.AddRange(titleInfo); var crc16 = Crc16.Create(result.ToArray()); header.crc16 = (ushort)crc16; bw.WriteStruct(header); bw.WritePadding(0x1c); bw.Write(result.ToArray()); } }
public void Save(string filename) { if (bmps[0].Width != 32 || bmps[0].Height != 32) { throw new System.Exception("Banner needs to be 32x32"); } using (var bw = new BinaryWriterX(File.Create(filename))) { var tileData = Kontract.Image.Common.Save(bmps[0], settings); var paletteData = format.paletteBytes; List <byte> result = new List <byte>(); result.AddRange(tileData); result.AddRange(paletteData); result.AddRange(titleInfo); var crc16 = Crc16.Create(result.ToArray()); header.crc16 = (ushort)crc16; bw.WriteStruct(header); bw.WritePadding(0x1c); bw.Write(result.ToArray()); } }
public XseqStringWriter(Stream stringStream) : base(stringStream) { _crc16 = Crc16.Create(Crc16Formula.X25); }
private void btnCrcFile_Click(object sender, EventArgs e) { btnFile_Click(btnCrcFile, new EventArgs()); Application.DoEvents(); int times = 1000; byte[] bs = File.ReadAllBytes(txtCrcFile.Text); FileStream fs = File.OpenRead(txtCrcFile.Text); MemoryStream ms = new MemoryStream(bs); byte[] res = null; System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); Crc16 crc16 = Crc16.Create(); watch.Start(); for (int i = 0; i < times; i++) { res = crc16.ComputeHash(bs); } watch.Stop(); lab16B.Text = res.ToHexString("") + " > " + (watch.ElapsedTicks / times).ToString(); Application.DoEvents(); watch.Restart(); for (int i = 0; i < times; i++) { res = crc16.ComputeHash(fs); } watch.Stop(); lab16S.Text = res.ToHexString("") + " > " + (watch.ElapsedTicks / times).ToString(); Application.DoEvents(); watch.Restart(); for (int i = 0; i < times; i++) { res = crc16.ComputeHash(ms); } watch.Stop(); lab16M.Text = res.ToHexString("") + " > " + (watch.ElapsedTicks / times).ToString(); Application.DoEvents(); Crc32 crc32 = Crc32.Create(); watch.Start(); for (int i = 0; i < times; i++) { res = crc32.ComputeHash(bs); } watch.Stop(); lab32B.Text = res.ToHexString("") + " > " + (watch.ElapsedTicks / times).ToString(); Application.DoEvents(); watch.Restart(); for (int i = 0; i < times; i++) { res = crc32.ComputeHash(fs); } watch.Stop(); lab32S.Text = res.ToHexString("") + " > " + (watch.ElapsedTicks / times).ToString(); Application.DoEvents(); watch.Restart(); for (int i = 0; i < times; i++) { res = crc32.ComputeHash(ms); } watch.Stop(); lab32M.Text = res.ToHexString("") + " > " + (watch.ElapsedTicks / times).ToString(); Application.DoEvents(); }