SAS宏将整数转换为十六进制字符串
假设我有以下宏变量赋值:SAS宏将整数转换为十六进制字符串,sas,Sas,假设我有以下宏变量赋值: %let x=42165; 如何获得相应的十六进制字符串表示形式?也就是说,如何转换&x并将其存储到&y中,以便 %put y=&y; 写 y=A4B5 ?像这样: %let y=%sysfunc(putn(&x.,hex4.)); [我认为没有%put()宏函数来避免与%put宏语句混淆。]如下: %let y=%sysfunc(putn(&x.,hex4.)); [我认为没有%put()宏函数来避免与%put宏语句混淆。]如果要存储
%let x=42165;
如何获得相应的十六进制字符串表示形式?也就是说,如何转换&x
并将其存储到&y
中,以便
%put y=&y;
写
y=A4B5
?像这样:
%let y=%sysfunc(putn(&x.,hex4.));
[我认为没有%put()
宏函数来避免与%put
宏语句混淆。]如下:
%let y=%sysfunc(putn(&x.,hex4.));
[我认为没有
%put()
宏函数来避免与%put
宏语句混淆。]如果要存储十六进制字符串表示形式,可以在Datastep程序中执行
以下是如何:
%let x=42165;
%put &x;
%let y=;
data _null_;
call symput('y',put(&x,hex4.));
run;
%put &y;
这很有效。如果需要将值存储到数据集中,只需修改程序。如果要存储十六进制字符串表示形式,可能需要在Datastep程序中执行 以下是如何:
%let x=42165;
%put &x;
%let y=;
data _null_;
call symput('y',put(&x,hex4.));
run;
%put &y;
这很有效。如果需要将值存储到数据集中,只需修改程序即可。Jeff的回答很好,但如果您通过
%sysfunc
生成&x
作为数据步函数的输出,则可以使用%sysfunc本身应用格式来保存几个字符,例如
%let y = %sysfunc(sum(42000, 165), hex4.);
Jeff的回答很好,但是如果您通过
%sysfunc
生成&x
作为数据步进函数的输出,您可以使用%sysfunc本身应用格式来保存几个字符,例如
%let y = %sysfunc(sum(42000, 165), hex4.);
您如何知道对格式
hex.
使用4
?它指定输出字符串的长度。如果您的数字范围大于#FFFF,您需要选择更大的数字。没有%put()
,因为这不是宏语言的正常用法put()
和put
(日志/文件写入)都存在于数据步语言中。您如何知道将4
用于格式hex.
?它指定输出字符串的长度。如果您的数字范围大于#FFFF,您需要选择更大的数字。没有%put()
,因为这不是宏语言的正常用法put()
和put
(日志/文件写入)都存在于数据步语言中。