假设我有以下宏变量赋值:SAS宏整型转换为十六进制字符串
%let x=42165;
如何,我可以得到相应的十六进制字符串表示?也就是说,我怎么能变换&x
并存储成&y
这样
%put y=&y;
写道
y=A4B5
?
假设我有以下宏变量赋值:SAS宏整型转换为十六进制字符串
%let x=42165;
如何,我可以得到相应的十六进制字符串表示?也就是说,我怎么能变换&x
并存储成&y
这样
%put y=&y;
写道
y=A4B5
?
像这样:
%let y=%sysfunc(putn(&x.,hex4.));
[我想没有%put()
宏功能,以避免与%put
宏语句confustion]
如果你想存储的十六进制字符串表示,可能要在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.);
你如何知道格式为'hex'<#>'?'? – synaptik 2014-10-28 16:18:31
它指定输出字符串的长度。如果你的数字范围高于#FFFF,你会想挑选更大的东西。 – Jeff 2014-10-28 16:58:41
没有'%put()',因为这不是宏语言的正常用法。 'put()'和'put'(日志/文件写入)都存在于数据步骤语言中。 – Joe 2014-10-28 18:31:18