我需要對長字符串進行編碼並放入XML文檔中。代碼示例:如何在SAS中編碼base64
data newData;
set oldData;
newString=oldString;
format newString $base64x64.;
run;
舊字符串看起來與新字符串相同..想法?
我需要對長字符串進行編碼並放入XML文檔中。代碼示例:如何在SAS中編碼base64
data newData;
set oldData;
newString=oldString;
format newString $base64x64.;
run;
舊字符串看起來與新字符串相同..想法?
我不知道您使用的SAS版本是什麼,但是這個document表示可以對最多32,767字節的字符串進行編碼。
由於這是最大的正數16位整數,我猜這個限制已經存在了一段時間了。
只需將
format newString $base64x64.;
實際上並沒有改變newString的價值可言。當你說OldString看起來和新字符串一樣時,你是什麼意思?你說長字符串不會編碼,所以我認爲你在方法中看到了一些編碼的證據。
請注意,您已在格式上指定64的顯式長度,以便格式化的值佔用64的字段寬度。因此,您只能使用該格式對長度爲48的字符串進行編碼(BASE64每3英寸生成4個字節)。你說一個長串,但多久?正如吉爾伯特所說,BASE64X格式的最大格式長度是32767,這意味着您可以生成的最大輸出base64字符串是32767.您的輸入字符串可能太長,而且您必須以某種方式將其拆分。
出於某種原因應用$ base64xw。格式轉換爲值不起作用。對我來說看起來像一個bug。但是,使用PUT函數將值轉換爲base64的作品。
data newData;
set oldData;
newString=put(oldString,$base64x64.);;
run;
你可以請演示如何做base64解碼?謝謝。 – 2017-01-06 00:04:23
看起來像可能有字符大小的限制。即使在更改長度後,長字符串也不會編碼。 – AFHood 2011-03-18 16:13:46
永遠不要讓它正常工作。根據下面的建議,它將對較小的字符串進行編碼,但即使在格式上指定較大的字符串長度時也會失敗較大的字符串最終寫出來給Unix並對其進行編碼。然後再讀回來。 – AFHood 2011-04-05 15:20:31