原です。
lib/base64.rb に入った「わたなべ式」decode64 ですが、、
def decode64(str)
string = ''
for line in str.split("\n")
line.delete!('^A-Za-z0-9+') # remove non-base64 chars
line.tr!('A-Za-z0-9+', ' -_') # convert to uuencoded format
len = ["#{32 + line.length * 3 / 4}"].pack("c")
# compute length byte
string += "#{len}#{line}".unpack("u") # uudecode and concatenate
end
return string
end
これって BASE63 になってません?(^^;
line.delete!('^A-Za-z0-9+') =>
line.delete!('^A-Za-z0-9+/')
line.tr!('A-Za-z0-9+', ' -_') =>
line.tr!('A-Za-z0-9+/', ' -_')
ですよね。
そもそも、Christiansen の
> #!/usr/bin/perl
> while (<>) {
> tr#A-Za-z0-9+/##cd; # remove non-base64 chars
> tr#A-Za-z0-9+/# -_#; # convert to uuencoded format
> $len = pack("c", 32 + 0.75*length); # compute length byte
> print unpack("u", $len . $_); # uudecode and print
> }
から変なんだけど。
自分が使ってるのは、いじっているうちに直していて、今まで
気づかなかったみたです。