Как кодировать base64 в SAS - PullRequest
       11

Как кодировать base64 в SAS

1 голос
/ 18 марта 2011

Мне нужно закодировать длинную строку и поместить в документ XML. Пример кода:

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

Старая строка выглядит так же, как новая строка. Идеи?

Ответы [ 3 ]

3 голосов
/ 21 марта 2011

По какой-то причине применяется $ base64xw. формат до значения не работает. Похоже, ошибка для меня. Однако использование функции PUT для преобразования значения в base64 работает.

data newData;
 set oldData;
 newString=put(oldString,$base64x64.);;
run;
1 голос
/ 19 марта 2011

Просто подать заявку

format newString $base64x64.;

фактически не меняет значение newString вообще. Когда вы говорите, что OldString выглядит так же, как новая строка, что вы имеете в виду? Вы говорите, что длинные строки не будут кодироваться, поэтому я предполагаю, что вы видите некоторые доказательства кодирования в вашем методе.

Обратите внимание, что вы указали явную длину 64 для формата, так что отформатированное значение займет ширину поля 64. Таким образом, вы сможете кодировать только строку длиной 48 с этим форматом ( BASE64 генерирует 4 байта на каждые 3 дюйма). Вы говорите длинную строку, но как долго? Как упоминает Гилберт, максимальная длина формата в формате BASE64X составляет 32767, что означает, что максимальная выходная строка base64, которую вы можете сгенерировать, равна 32767. Возможно, ваша входная строка слишком длинная, и вам придется как-то ее разделить .

1 голос
/ 18 марта 2011

Я не знаю, какую версию SAS вы используете, но в этом документе говорится, что строки до 32 767 байт могут быть закодированы.

Поскольку это наибольшее положительное 16-битное целое число, я предполагаю, что этот предел уже давно существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...