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






