我目前正在使用Ruby的'base64',但创建的字符串有特殊字符,如/ + =。
如何删除这些并仍然确保我的解码将来有效?
基本上我想要使用字母数字。
答案 0 :(得分:5)
我没有发明新东西,而是使用Base64.urlsafe_encode64
(及其对应的Base64.urlsafe_decode64
),它基本上是base64,+和/替换为 - 和_。这符合rfc 4648所以应该广泛理解
答案 1 :(得分:2)
如果您需要字母数字,我认为使用base 36更好更实用.Ruby内置编码/解码,最多可达36(26个字母和10个数字)。
123456.to_s(36)
# => "qglj"
"qglj".to_i(36)
# => 123456
答案 2 :(得分: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"
这可以适用于处理较低的碱基,但它可能就足够了。