SAS宏将整数转换为十六进制字符串

时间:2014-10-28 15:42:10

标签: sas

假设我有以下宏变量赋值:

%let x=42165;

如何获得相应的十六进制字符串表示?也就是说,我如何转换&x并将其存储到&y中,以便

%put y=&y;

写入

y=A4B5

3 个答案:

答案 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.);