Publié le :
Macro CREATION_INTERNE

Conversion hexadécimal vers ASCII

Ce code est également disponible en : Deutsch English Español
Cette macro, nommée AHGits, prend une chaîne de caractères en entrée où chaque paire de caractères représente un code hexadécimal (par exemple, '41' pour 'A'). Elle itère sur cette chaîne, extrait chaque paire hexadécimale, la convertit en sa valeur décimale correspondante puis en son caractère ASCII en utilisant la fonction `SYSFUNC(BYTE())`, et concatène ces caractères pour former la chaîne de sortie finale. Elle est utile pour décoder des chaînes encodées en hexadécimal.
Analyse des données

Type : CREATION_INTERNE


La macro opère directement sur la chaîne de caractères qui lui est passée en paramètre (`str`), sans dépendre de sources de données externes ou internes (comme SASHELP ou des tables préexistantes).

1 Bloc de code
MACRO
Explication :
Ce bloc définit la macro `AHGits`. Il initialise des variables locales pour la boucle et la construction de la chaîne de sortie. La variable `n` calcule le nombre de paires hexadécimales dans la chaîne d'entrée. Une boucle `%do` itère sur chaque paire. `%substr(&str,&from,2)` extrait deux caractères (représentant une valeur hexadécimale). La fonction `SYSFUNC(BYTE())` convertit cette valeur hexadécimale en son caractère ASCII correspondant. Ce caractère est ensuite concaténé à la variable `outstr` qui accumule le résultat. La macro renvoie finalement la chaîne `outstr` décodée.
Copié !
1%macro AHGits(str);
2%local i n outstr from char;
3%let n=%eval(%LENGTH(&str)/2);
4 
5%DO i=1 %to &n;
6%let from=%eval(&i*2-1);
7%let outstr=&outstr%sysfunc(byte(%substr(&str,&from,2)));
8%END;
9&outstr
10%mend;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.