假设我有以下宏变量赋值:
%let x=42165;
如何获得相应的十六进制字符串表示?也就是说,我如何转换&x
并将其存储到&y
中,以便
%put y=&y;
写入
y=A4B5
答案 0 :(得分:3)
像这样:
%let y=%sysfunc(putn(&x.,hex4.));
[我认为没有%put()
宏函数可以避免使用%put
宏语句造成混淆。]
答案 1 :(得分:1)
如果要存储HEX字符串表示形式,可能需要在Datastep程序中执行此操作。
以下是:
%let x=42165;
%put &x;
%let y=;
data _null_;
call symput('y',put(&x,hex4.));
run;
%put &y;
这很有效。如果需要将值存储到数据集中,只需修改程序即可。
答案 2 :(得分:1)
杰夫的答案很好,但如果您通过&x
生成%sysfunc
作为数据步骤功能的输出,则可以通过应用格式保存一些字符使用%sysfunc本身,例如
%let y = %sysfunc(sum(42000, 165), hex4.);