在SAS数据步骤中复制BTOA Javascript函数

时间:2018-04-24 10:51:22

标签: javascript sas base64

当我使用BTOA函数加密Javascript中的字符串g.b@yahoo.it时,我得到结果Zy5iQHlhaG9vLml0

此函数将字符串转换为字符串的base64表示形式。当我尝试在SAS中执行等效操作时,我得到了不同的值:

proc fcmp outlib=common.funcs.funcs; 
  function b64(string $) $; 
  length digest $32767; 
  digest=strip(put(string,$base64x32767.)); 
  return(digest); 
  endsub; 
quit; 

data email; 
  input email $12.; 
  datalines; 
g.b@yahoo.it 
run; 

data X; 
  set email; 
  e1 = "<" || trim(email) || ">"; 
  pw_e = b64(e1); 
  put _all_;
run;

给我:

email=g.b@yahoo.it e1=<g.b@yahoo.it> pw_e=PGcuYkB5YWhvby5pdD4= _ERROR_=0 _N_=1

根据每个文档,他们使用相同的字母:

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003161924.htm

https://www.w3schools.com/jsref/met_win_btoa.asp

我想在SAS Data Step中复制相同的功能以获得相同的结果。有没有办法在SAS中做到这一点?

1 个答案:

答案 0 :(得分:0)

他们正在做同样的事情。您正在修改传递给SAS中base64编码函数的字符串,这就是您获得不同结果的原因。您在SAS中使用的字符串为<g.b@yahoo.it>(您在其周围添加了<>个字符。

如果您通过btoa()运行相同的<g.b@yahoo.it>字符串,则会得到PGcuYkB5YWhvby5pdD4=

的相同结果