【发布时间】:2021-04-12 18:47:42
【问题描述】:
我需要在 RPGLE 程序中以 ascii 模式进行一些 base64 编码。以下是我尝试的精简程序。该程序使用 QSYSDIR/QAXIS10HT 服务程序中的 apr_base64_encode_binary 过程来执行编码。它尝试编码的字段 (myPlainData) 的值为“Hello”。该字段的 ccsid 为 819(ascii),我也需要编码结果在 ascii 中。但是 apr_base64_encode_binary 会一直返回 EBCDIC 中的编码结果。有没有办法以 ASCII 格式获取结果?
* play variables
D myPlainData s 200 ccsid(819)
D myPlainDataLen...
D s 10I 0
D myBase64Data s 65535A ccsid(819)
D myBase64DataLen...
D s 10I 0
* ibm base 64 encoder
* note: apr_base64_* functions can be found in the QSYSDIR/QAXIS10HT service program
D apr_base64_encode_binary...
D pr 10i 0 extproc('apr_base64_encode_binary')
D piBase64Data...
D 65535A options(*varsize) ccsid(819)
D piPlainData...
D 65535A options(*varsize) const
D piPlainDataLen...
D 10i 0 value
/free
myPlainData = 'Hello'; // myPlainData is a ccsid(819) field (ascii field)
myPlainDataLen = %len(%trimr(myPlainData));
//encode the data
myBase64DataLen = apr_base64_encode_binary(myBase64Data
:myPlainData
:myPlainDataLen);
*inlr = *on;
/end-free
【问题讨论】:
标签: rpgle