1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
//Donne la valeur Décimal de deux octects Hexa
public static int DoubleByteToInt(Byte PoidFort, Byte PoidFaible)
{
Byte[] Buffer = new Byte[2];
Buffer[0] = PoidFort;
Buffer[1] = PoidFaible;
return HexaToInt(Buffer, 0, 2);
}
//Donne la valeur Décimal de X octect dans une Trame
public static int HexaToInt(Byte[] Buffer, int debut, int longueur)
{
int Somme = 0;
int facteur = 0;
Char currentCaractere;
Byte[] WorkingBuffer = new Byte[longueur];
for (int i = 0; i < longueur; i++)
{
WorkingBuffer[i] = Buffer[debut + i];
}
String tmpString = TrameToString(WorkingBuffer).Replace(" ","");
for (int j = tmpString.Length - 1; j >= 0; j--)
{
currentCaractere = tmpString[j];
switch (currentCaractere)
{
case '1': Somme += 1 * puissance(16, facteur); break;
case '2': Somme += 2 * puissance(16, facteur); break;
case '3': Somme += 3 * puissance(16, facteur); break;
case '4': Somme += 4 * puissance(16, facteur); break;
case '5': Somme += 5 * puissance(16, facteur); break;
case '6': Somme += 6 * puissance(16, facteur); break;
case '7': Somme += 7 * puissance(16, facteur); break;
case '8': Somme += 8 * puissance(16, facteur); break;
case '9': Somme += 9 * puissance(16, facteur); break;
case 'A': Somme += 10 * puissance(16, facteur); break;
case 'B': Somme += 11 * puissance(16, facteur); break;
case 'C': Somme += 12 * puissance(16, facteur); break;
case 'D': Somme += 13 * puissance(16, facteur); break;
case 'E': Somme += 14 * puissance(16, facteur); break;
case 'F': Somme += 15 * puissance(16, facteur); break;
}
facteur++;
}
return Somme;
}
//Calcul la puissance
static int puissance(int nombre, int puissance)
{
int Somme = nombre;
if (puissance == 0) return 1;
for (int i = 0; i < puissance - 1; i++)
{
Somme = Somme * nombre;
}
return Somme;
}
//transforme une trame sous format String
public static String TrameToString(Byte[] pTrame)
{
String TrameFormatString = "";
for (int i = 0; i < pTrame.Length; i++)
{
TrameFormatString += ToHexString(pTrame[i]);
if (i != (pTrame.Length-1) ) TrameFormatString += " ";
}
return TrameFormatString;
}
Transforme un Octect sous format String
static String ToHexString(byte byte1)
{
return byte1.ToString("X2", null);
} |
Partager