using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StardustCore.Math
{
///
/// Base class for hex representation.
///
public class Hex
{
///
/// The hex value represented as a string.
///
public string hexValue;
///
/// Default constructor.
///
public Hex()
{
}
///
/// Empty Constructor;
///
///
public Hex(string HexValue)
{
}
///
/// Verifies that the hex is of the specified length.
///
///
public virtual bool verifyHexLength()
{
return true;
}
///
/// Trims the hex value by removing the leading 0x;
///
///
public virtual string trimHex()
{
return this.hexValue.Split('x')[1];
}
///
/// A virtual function to be overriden.
///
///
public virtual List getBytes()
{
return new List();
}
///
/// Converts a Hex byte (represented as a length two string) to an int equal or less than 255. Ex ff=255;
///
/// The length two value to be converted.
///
public virtual int convertHexByteTo255Int(string value)
{
int val1 = convertHexValueToInt(value[0]);
int val2 = convertHexValueToInt(value[1]);
val1 *= 16;
val2 *= 16;
return val1 + val2;
}
///
/// Converts a hex char to an int.
///
///
///
public virtual int convertHexValueToInt(char c)
{
if (c == 'a') return 10;
else if (c == 'b') return 11;
else if (c == 'c') return 12;
else if (c == 'd') return 13;
else if (c == 'e') return 14;
else if (c == 'f') return 15;
else return Convert.ToInt32(c);
}
///
/// Gets the associated byte from the hex positioning.
///
///
///
public virtual string getByte(int index)
{
string hex = this.trimHex();
int val = index * 2 + 1;
char str1 = hex[index * 2];
char str2 = hex[val];
return (str1.ToString() + str2.ToString());
}
}
}