通过使用$ HEX格式,可以很容易地将数字转换为基于SAS中的基数16的字母数字值.现在我正在寻找一种简单的方法来完成基数36(10个数字和26个字母).
例子:
在Java中,你可以通过Integer.toString(mynumber, 36).有任何想法如何在SAS Base中做到这一点?
不幸的是,有一种简单的方法可以使用格式来完成此操作,但以下数据步骤应该可以解决问题。它仅适用于正整数。
data _null_;
infile cards;
input innumber;
number = innumber;
format base $32.;
alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if number = 0 then base = '0';
else
do while (number ne 0);
mod = mod(number, length(alphabet));
div = floor(number / (length(alphabet)));
base = cats(substr(alphabet,mod+1,1),base);
number = div;
end;
put innumber= base=;
cards;
0
100
2000
30000
400000
;
run;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2094 次 |
| 最近记录: |