1

現在、Rubyの「base64」を使用していますが、作成される文字列には/+=などの特殊文字が含まれています。

これらを削除し、将来的にデコードが機能することを確認するにはどうすればよいですか?

基本的に、英数字を使用したいと思います。

4

3 に答える 3

5

何か新しいものを発明するのではなく、基本的に base64 で + と / を - と _ に置き換えたBase64.urlsafe_encode64もの (およびその対応するもの) を使用します。Base64.urlsafe_decode64これはRFC 4648に準拠しているため、広く理解できるはずです

于 2013-01-09T18:29:29.447 に答える
2

英数字が必要な場合は、36進数を使用する方が適切で実用的だと思います。Rubyには、36進数(26文字と10桁)までのエンコード/デコードが組み込まれています。

123456.to_s(36)
# => "qglj"

"qglj".to_i(36)
# => 123456
于 2013-01-09T16:11:41.823 に答える
0
class Integer
  Base62_digits = [*("0".."9"), *("a".."z"), *("A".."Z")]

  def base_62
    return "0" if zero?
    sign = self < 0 ? "-" : ""
    n, res = self.abs, ""
    while n > 0
      n, units = n.divmod(62)
      res = Base62_digits[units] + res
    end
    sign + res
  end

end

p 124.base_62 # => "20"

これは、より低いベースを処理するように適合させることができますが、そのままで十分な場合があります。

于 2013-01-09T17:11:08.633 に答える