[C# 2.0] Conversion hexadécimale dans un tableau de byte[]
Bonjour.
Je désire envoyer des trames via le protocole Modbus. J'ai donc fait 2 fonctions pour passer de la conversion hexa<==>caractère ASCII ou UNICODE et vice-versa.
Code:
1 2 3 4 5 6 7 8 9 10
|
/// <summary>
/// Convertit le champ data d'une trame modbus en chaîne de caractères.
/// </summary>
/// <param name="bData">Les données à convertir.</param>
/// <returns>Une chaîne de caractères correctement formatée.</returns>
public string convertTrameDataToString(byte[] bData)
{
return this.Encoding.GetString(bData, 0, bData.Length);
} |
Pour cette première fonction, le tableau bData peut contenir des chiffres en décimal ou en hexa, cela me renverra toujours la bonne chaîne.
Exemple: que bData contienne { 66, 111, 110, 106, 111, 117, 114, 46 } ou qu'il contienne ceci { 0x42, 0x6F, 0x6E, 0x6A, 0x6F, 0x75, 0x72, 0x2E }, la string renvoyée sera "Bonjour." donc cela est correct
Code:
1 2 3 4 5 6 7 8 9 10
|
/// <summary>
/// Convertit une chaîne de caractères en données exploitables par une trame modbus.
/// </summary>
/// <param name="sData">La chaîne de caractères à convertir.</param>
/// <returns>Un tableau d'octets.</returns>
public byte[] convertStringToTrameData(string sData)
{
return this.Encoding.GetBytes(sData);
} |
Par contre, si je rentre en paramètre sData="Bonjour." mon tableau de byte[] contiendra uniquement les bons chiffres en décimal, à savoir { 66, 111, 110, 106, 111, 117, 114, 46 } or je voudrais qu'il contienne ses mêmes chiffres en hexadécimal.
Merci d'avance à ceux qui pourront (ou qui essaieront) d'éclairer ma lanterne.