2011-03-18 82 views
1

我需要对长字符串进行编码并放入XML文档中。代码示例:如何在SAS中编码base64

data newData; 
set oldData; 
newString=oldString; 
format newString $base64x64.; 
run; 

旧字符串看起来与新字符串相同..想法?

+0

看起来像可能有字符大小的限制。即使在更改长度后,长字符串也不会编码。 – AFHood 2011-03-18 16:13:46

+0

永远不要让它正常工作。根据下面的建议,它将对较小的字符串进行编码,但即使在格式上指定较大的字符串长度时也会失败较大的字符串最终写出来给Unix并对其进行编码。然后再读回来。 – AFHood 2011-04-05 15:20:31

回答

1

我不知道您使用的SAS版本是什么,但是这个document表示可以对最多32,767字节的字符串进行编码。

由于这是最大的正数16位整数,我猜这个限制已经存在了一段时间了。

1

只需将

format newString $base64x64.; 

实际上并没有改变newString的价值可言。当你说OldString看起来和新字符串一样时,你是什么意思?你说长字符串不会编码,所以我认为你在方法中看到了一些编码的证据。

请注意,您已在格式上指定64的显式长度,以便格式化的值占用64的字段宽度。因此,您只能使用该格式对长度为48的字符串进行编码(BASE64每3英寸生成4个字节)。你说一个长串,但多久?正如吉尔伯特所说,BASE64X格式的最大格式长度是32767,这意味着您可以生成的最大输出base64字符串是32767.您的输入字符串可能太长,而且您必须以某种方式将其拆分。

3

出于某种原因应用$ base64xw。格式转换为值不起作用。对我来说看起来像一个bug。但是,使用PUT函数将值转换为base64的作品。

data newData; 
set oldData; 
newString=put(oldString,$base64x64.);; 
run; 
+0

你可以请演示如何做base64解码?谢谢。 – 2017-01-06 00:04:23