首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Base64并从字符串中排除特殊字符+/=?

如何使用Base64并从字符串中排除特殊字符+/=?
EN

Stack Overflow用户
提问于 2013-01-10 00:06:24
回答 3查看 5.1K关注 0票数 1

我目前使用的是Ruby的'base64‘,但是创建的字符串有像/+=这样的特殊字符。

我如何删除这些,并仍然确保我的解码工作,在未来?

本质上,我希望使用字母数字。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-10 02:29:29

与其发明一些新的东西,我会使用Base64.urlsafe_encode64 (和它的对应Base64.urlsafe_decode64),它基本上是base64 +和/和_。这符合RFC4648,因此应该被广泛理解

票数 5
EN

Stack Overflow用户

发布于 2013-01-10 00:11:42

如果你想要字母数字,我认为使用基数36更好,也更实用。Ruby有内置的编码/解码,最高可达36进制(26个字母和10个数字)。

代码语言:javascript
运行
复制
123456.to_s(36)
# => "qglj"

"qglj".to_i(36)
# => 123456
票数 2
EN

Stack Overflow用户

发布于 2013-01-10 01:11:09

代码语言:javascript
运行
复制
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"

这可以调整为处理较低的基础,但它可能是足够的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14241343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档