J'ai une chaîne hexadécimale que j'ai besoin de convertir en un tableau d'octets. La meilleure façon (c.-à-efficace et moins code) est:Quelle est la meilleure façon de convertir une chaîne hexadécimale en un tableau d'octets (.NET)?
string hexstr = "683A2134";
byte[] bytes = new byte[hexstr.Length/2];
for(int x = 0; x < bytes.Length; x++)
{
bytes[x] = Convert.ToByte(hexstr.Substring(x * 2, 2), 16);
}
Dans le cas où j'ai une valeur de 32 bits, je peux faire ce qui suit:
string hexstr = "683A2134";
byte[] bytes = BitConverter.GetBytes(Convert.ToInt32(hexstr, 16));
Cependant qu'en est dans le cas général? Y a-t-il une meilleure fonction intégrée, ou une façon plus claire (qui ne doit pas être plus rapide, mais toujours performante) de le faire?
Je préférerais une fonction intégrée car il semble y en avoir une pour tout (bien des choses communes) sauf cette conversion particulière.
Notez que votre solution et acceptée la solution échouera si elle passe une chaîne de longueur impaire. Dans le cas de "A", par exemple, le tableau d'octets retourné n'aura rien dedans. –
@Jim, je viens de poster une réponse à cette question, bien qu'il soit assez facile de corriger les autres solutions. – LukeH
Je le réalise. Je supposais une chaîne validée. –