Pouvons-nous convertir une chaîne hexadécimale en tableau d'octets en utilisant une fonction intégrée en C# ou dois-je créer une méthode personnalisée pour cela ?
Mon dieu!! Vous rendez-vous compte à quel point c'est INEFFICACE??? Bien sûr, c'est amusant, mais LINQ est trop souvent utilisé pour des tâches qui devraient être autrement! Le code LINQ nécessite .NET 3.5 et nécessite la référence à System.Core (qui pourrait ne pas être nécessaire autrement). Consultez l'article sur les solutions efficaces pour trouver des alternatives.
2 votes
Vous pouvez facilement convertir une chaîne en byte[] en une seule ligne : var byteArray = Encoding.ASCII.GetBytes(string_with_your_data);
29 votes
@mik-T, une chaîne hexadécimale est dans un certain format comme 219098C10D7 où chaque deux caractères se convertissent en un seul octet. votre méthode n'est pas utilisable.
4 votes
Cette question ne semble pas être un doublon de la question sélectionnée. celle-ci convertit à PARTIR de chaîne hexadécimale en tableau d'octets, tandis que l'autre question convertit un tableau d'octets en hexadécimal.
1 votes
Une simple ligne de code avec :
BigInteger.Parse(str, System.Globalization.NumberStyles.HexNumber).ToByteArray().Reverse().ToArray()
0 votes
@GregoryMorse Attention, BigInteger suppose que la chaîne représente un nombre signé, et donnera un résultat inattendu si le bit le plus significatif du MSB est 1, à moins que vous ne fassiez un traitement spécial.
0 votes
Oui, vous devez ajouter un "00" à la chaîne avant de l'analyser. Vous avez raison à ce sujet, ce code fonctionnera seulement 50% du temps.
"00" + str