This code snippets require the IO namespace.
Code:
using System.IO;
Code:
public static byte[] ConvertToByteArray(string value) { byte[] bytes = null; if (String.IsNullOrEmpty(value)) bytes = Empty; else { int string_length = value.Length; int character_index = (value.StartsWith("0x", StringComparison.Ordinal)) ? 2 : 0; // Does the string define leading HEX indicator '0x'. Adjust starting index accordingly. int number_of_characters = string_length - character_index; bool add_leading_zero = false; if (0 != (number_of_characters % 2)) { add_leading_zero = true; number_of_characters += 1; // Leading '0' has been striped from the string presentation. } bytes = new byte[number_of_characters / 2]; // Initialize our byte array to hold the converted string. int write_index = 0; if (add_leading_zero) { bytes[write_index++] = FromCharacterToByte(value[character_index], character_index); character_index += 1; } for (int read_index = character_index; read_index < value.Length; read_index += 2) { byte upper = FromCharacterToByte(value[read_index], read_index, 4); byte lower = FromCharacterToByte(value[read_index + 1], read_index + 1); bytes[write_index++] = (byte)(upper | lower); } } return bytes; } private static byte FromCharacterToByte(char character, int index, int shift = 0) { byte value = (byte)character; if (((0x40 < value) && (0x47 > value)) || ((0x60 < value) && (0x67 > value))) { if (0x40 == (0x40 & value)) { if (0x20 == (0x20 & value)) value = (byte)(((value + 0xA) - 0x61) << shift); else value = (byte)(((value + 0xA) - 0x41) << shift); } } else if ((0x29 < value) && (0x40 > value)) value = (byte)((value - 0x30) << shift); else throw new InvalidOperationException(String.Format("Character '{0}' at index '{1}' is not valid alphanumeric character.", character, index)); return value; } private static readonly byte[] Empty = new byte[0];
Code:
private void WriteToFile(string Filename, string Text, int Position) { byte[] ContentToWrite; ContentToWrite = ConvertToByteArray(Text); BinaryWriter BinW = new BinaryWriter(File.OpenWrite(Filename)); BinW.BaseStream.Position = Position; BinW.Write(ContentToWrite); BinW.Close(); }
Code:
private bool ReadNCompare(string Filename, string Text, int Position) { byte[] Readtext = { }; string Content = ""; byte[] Converted = ConvertToByteArray(Text); string Trimmed = ""; int Comparation = 0; BinaryReader binRead = new BinaryReader(File.OpenRead(Filename)); binRead.BaseStream.Position = Position; Readtext = binRead.ReadBytes(Converted.Length); binRead.Close(); Content = BitConverter.ToString(Readtext); Trimmed = Content.Replace("-", ""); Comparation = Trimmed.IndexOf(Text); if (Comparation != -1) return true; else return false; }
Greetings
Epanias