powerbuilde Base64Decode 函数 怎么写
时间: 2024-03-01 21:55:18 浏览: 68
PowerBuilder 中没有内置的 Base64 解码函数,但是您可以使用以下示例代码来编写您自己的 Base64Decode 函数:
```
// Base64 字符集
string ls_base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
// Base64 解码函数
public byte[] Base64Decode(string as_base64)
{
// 计算需要解码的字节数
long ll_len = Len(as_base64)
long ll_paddings = Count(as_base64, "=")
long ll_decode_len = ll_len / 4 * 3 - ll_paddings
byte lb_decode[] = create ByteArray(ll_decode_len)
byte lb_chunk[4]
long ll_chunk_len
long ll_src_pos = 1
long ll_dest_pos = 1
// 循环解码每个四字节块
do while ll_src_pos < ll_len
// 读取四字节块
ll_chunk_len = 0
do while ll_chunk_len < 4 and ll_src_pos < ll_len
lb_chunk[ll_chunk_len+1] = Pos(ls_base64_chars, Mid(as_base64, ll_src_pos, 1)) - 1
if lb_chunk[ll_chunk_len+1] >= 0 then
ll_chunk_len ++
end if
ll_src_pos ++
loop
// 解码为三字节块
if ll_chunk_len >= 2 then
lb_decode[ll_dest_pos] = lb_chunk[1] * 4 + lb_chunk[2] / 16
ll_dest_pos ++
end if
if ll_chunk_len >= 3 then
lb_decode[ll_dest_pos] = lb_chunk[2] * 16 + lb_chunk[3] / 4
ll_dest_pos ++
end if
if ll_chunk_len >= 4 then
lb_decode[ll_dest_pos] = lb_chunk[3] * 64 + lb_chunk[4]
ll_dest_pos ++
end if
loop
return lb_decode
end function
```
这个函数将 Base64 字符串解码为字节数组。如果您需要将解码后的字节数组转换为 Blob 对象,请参考我之前提供的示例代码。
阅读全文