이상한 루비 인코딩 만남을 갖는 괴롭게 :루비 base64로 인코딩/디코딩/압축 해제 ('m')는
ruby-1.9.2-p180 :618 > s = "a8dnsjg8aiw8jq".ljust(16,'=')
=> "a8dnsjg8aiw8jq=="
ruby-1.9.2-p180 :619 > s.size
=> 16
ruby-1.9.2-p180 :620 > s.unpack('m0')
ArgumentError: invalid base64
from (irb):631:in `unpack'
ruby-1.9.2-p180 :621 > s.unpack('m')
=> ["k\xC7g\xB28<j,<\x8E"]
ruby-1.9.2-p180 :622 > s.unpack('m').first.size
=> 10
ruby-1.9.2-p180 :623 > s.unpack('m').pack('m')
=> "a8dnsjg8aiw8jg==\n"
ruby-1.9.2-p180 :624 > s.unpack('m').pack('m') == s
=> false
이 대칭되지 않는 이유 어떤 생각!? 그리고 'm0'(decode64_strict)이 전혀 작동하지 않는 이유는 무엇입니까? 입력 문자열은 base64 알파벳의 4 자 배수로 채워집니다. 여기서 14 × 6 비트 = 84 비트, 즉 10 1/2 8 비트 바이트, 즉 11 바이트입니다. 하지만 디코딩 된 문자열은 마지막 니블을 버리는 것처럼 보입니까?
나는 명백한 것이 없거나 버그인가? 해결 방법은 무엇입니까? cf. http://www.ietf.org/rfc/rfc4648.txt