非常教程

Ruby 2.4参考手册

Base64

Base64

Base64 模块使用 Base64 表示提供二进制数据的编码(#encode64,strict_encode64,urlsafe_encode64)和解码(#decode64,strict_decode64,urlsafe_decode64)。

示例

一个简单的编码和解码。

require "base64"

enc   = Base64.encode64('Send reinforcements')
                    # -> "U2VuZCByZWluZm9yY2VtZW50cw==\n"
plain = Base64.decode64(enc)
                    # -> "Send reinforcements"

使用 base64 编码数据的目的是将任何二进制数据转换为纯可打印字符。

公共实例方法

decode64(str)显示源码

返回 Base64 解码str版本。此方法符合 RFC 2045。基本字母表外的字符将被忽略。

require 'base64'
str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' +
      'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' +
      'ZSB0aHJlZQpBbmQgc28gb24uLi4K'
puts Base64.decode64(str)

产生:

This is line one
This is line two
This is line three
And so on...
# File lib/base64.rb, line 57
def decode64(str)
  str.unpack("m").first
end

encode64(bin)显示源代码

返回 Base64 编码的bin版本。此方法符合 RFC 2045。换行符被添加到每60个编码字符。

require 'base64'
Base64.encode64("Now is the time for all good coders\nto learn Ruby")

产生:

Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
UnVieQ==
# File lib/base64.rb, line 37
def encode64(bin)
  [bin].pack("m")
end

strict_decode64(str)显示源码

返回 Base64 解码str版本。此方法符合 RFC 4648。如果str填充不正确或包含非字母字符,则会引发 ArgumentError 。请注意,CR 或 LF 也会被拒绝。

# File lib/base64.rb, line 72
def strict_decode64(str)
  str.unpack("m0").first
end

strict_encode64(bin)显示源代码

返回 Base64 编码的bin版本。此方法符合 RFC 4648。不添加换行符。

# File lib/base64.rb, line 64
def strict_encode64(bin)
  [bin].pack("m0")
end

urlsafe_decode64(str)显示源码

返回str的Base64解码版本.此方法符合 RFC 4648 中的“Base 64 Encoding with URL and Filename Safe Alphabet”。字母表使用' - '而不是'+'和'_'而不是'/'。

填充字符是可选的。该方法接受正确填充和未填充的输入。请注意,它仍拒绝填充不正确的输入。

# File lib/base64.rb, line 96
def urlsafe_decode64(str)
  # NOTE: RFC 4648 does say nothing about unpadded input, but says that
  # "the excess pad characters MAY also be ignored", so it is inferred that
  # unpadded input is also acceptable.
  str = str.tr("-_", "+/")
  if !str.end_with?("=") && str.length % 4 != 0
    str = str.ljust((str.length + 3) & ~3, "=")
  end
  strict_decode64(str)
end

urlsafe_encode64(bin,padding:true)显示源文件

返回 Base64 编码的bin版本。此方法符合 RFC 4648 中的“Base 64 Encoding with URL and Filename Safe Alphabet”。字母表使用' - '而不是'+'和'_'而不是'/'。请注意,结果仍然可以包含“=”。您可以通过设置padding为 false 来删除填充。

# File lib/base64.rb, line 82
def urlsafe_encode64(bin, padding: true)
  str = strict_encode64(bin).tr("+/", "-_")
  str = str.delete("=") unless padding
  str
end
Base64
Ruby 2.4

Ruby 是一种面向对象、命令式、函数式、动态的通用编程语言,是世界上最优美而巧妙的语言。

主页 https://www.ruby-lang.org/
源码 https://github.com/ruby/ruby
版本 2.4
发布版本 2.4.1

Ruby 2.4目录

1.缩略 | Abbrev
2.ARGF
3.数组 | Array
4.Base64
5.基本对象 | BasicObject
6.基准测试 | Benchmark
7.BigDecimal
8.绑定 | Binding
9.CGI
10.类 | Class
11.比较 | Comparable
12.负责 | Complex
13.计算续体 | Continuation
14.覆盖 | Coverage
15.CSV
16.日期 | Date
17.日期时间 | DateTime
18.DBM
19.代理 | Delegator
20.摘要 | Digest
21.Dir
22.DRb
23.编码 | Encoding
24.枚举 | Enumerable
25.枚举 | Enumerator
26.ENV
27.ERB
28.错误 | Errors
29.Etc
30.期望值 | Exception
31.错误类 | FalseClass
32.Fiber
33.Fiddle
34.文件 | File
35.文件实用程序 | FileUtils
36.查找 | Find
37.浮点 | Float
38.Forwardable
39.GC
40.GDBM
41.GetoptLong
42.Hash
43.Integer
44.IO
45.IPAddr
46.JSON
47.Kernel
48.语言 | 3Language
49.记录 | Logger
50.编排 | Marshal
51.MatchData
52.数学 | Math
53.矩阵 | Matrix
54.方法 | Method
55.模型 | Module
56.监控 | Monitor
57. 互斥 | Mutex
58.Net
59.Net::FTP
60.Net::HTTP
61.Net::IMAP
62.Net::SMTP
63.NilClass
64.数字 | Numeric
65.对象 | Object
66.ObjectSpace
67.Observable
68.Open3
69.OpenSSL
70.OpenStruct
71.OpenURI
72.OptionParser
73.路径名 | Pathname
74.完整输出 | PrettyPrint
75.Prime
76.Proc
77.过程 | Process
78.PStore
79.PTY
80.队列 | Queue
81.随机 | Random
82.范围 | Range
83.合理的 | Rational
84.Readline
85.Regexp
86.Resolv
87.Ripper
88.RubyVM
89.Scanf
90.SDBM
91.SecureRandom
92.Set
93.Shell
94.信号 | Signal
95.Singleton
96.套接字 | Socket
97.字符串 | String
98.StringIO
99.StringScanner
100.结构 | Struct