Publicado el :
Macro CREATION_INTERNE

Conversión de hexadecimal a ASCII

Este código también está disponible en: Deutsch English Français
Esta macro, llamada AHGits, toma una cadena de caracteres como entrada donde cada par de caracteres representa un código hexadecimal (por ejemplo, '41' para 'A'). Itera sobre esta cadena, extrae cada par hexadecimal, lo convierte a su valor decimal correspondiente y luego a su carácter ASCII usando la función `SYSFUNC(BYTE())`, y concatena estos caracteres para formar la cadena de salida final. Es útil para decodificar cadenas codificadas en hexadecimal.
Análisis de datos

Type : CREATION_INTERNE


La macro opera directamente sobre la cadena de caracteres que se le pasa como parámetro (`str`), sin depender de fuentes de datos externas o internas (como SASHELP o tablas preexistentes).

1 Bloque de código
MACRO
Explicación :
Este bloque define la macro `AHGits`. Inicializa variables locales para el bucle y la construcción de la cadena de salida. La variable `n` calcula el número de pares hexadecimales en la cadena de entrada. Un bucle `%do` itera sobre cada par. `%substr(&str,&from,2)` extrae dos caracteres (que representan un valor hexadecimal). La función `SYSFUNC(BYTE())` convierte este valor hexadecimal en su carácter ASCII correspondiente. Este carácter se concatena luego a la variable `outstr` que acumula el resultado. Finalmente, la macro devuelve la cadena `outstr` decodificada.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.