📜  Ruby 模块 Base64,一个简单的编码和解码. (1)

📅  最后修改于: 2023-12-03 14:47:09.588000             🧑  作者: Mango

Ruby 模块 Base64: 一个简单的编码和解码

Ruby 模块 Base64 提供了一种简单的编码和解码方式,可以将任意字符串转换为可打印的 ASCII 字符。这个模块非常有用,因为大多数的邮件和传输协议都只支持 ASCII 字符。

编码

要将一个字符串编码为 Base64 字符串,可以使用 Base64 模块的 encode64 方法,它的参数应该是一个 ASCII 字符串。下面是一个例子:

require 'base64'

puts Base64.encode64('hello world')

这个程序会输出 aGVsbG8gd29ybGQ=\n。注意,Base64 编码后的字符串结尾通常包含一个换行符,这是因为许多传输协议要求每 76 个字符后换行,否则可能会出现字词断开的问题。

解码

要将一个 Base64 字符串解码成一个 ASCII 字符串,可以使用 Base64 模块的 decode64 方法,它的参数应该是一个经过 Base64 编码的字符串。下面是一个例子:

require 'base64'

puts Base64.decode64('aGVsbG8gd29ybGQ=')

这个程序会输出 hello world。注意,解码后得到的字符串不包含结尾的换行符。

URL 安全的 Base64

有时候需要将 Base64 编码的字符串用作 URL 的一部分,这时候就需要进行 URL 安全的编码。URL 安全的编码会将字符 +/ 替换为 -_,而且会删除结尾的 =

要进行 URL 安全的 Base64 编码和解码,可以使用 Base64 模块的 urlsafe_encode64urlsafe_decode64 方法。下面是一个例子:

require 'base64'

encoded = Base64.urlsafe_encode64('hello world')
puts encoded

decoded = Base64.urlsafe_decode64(encoded)
puts decoded

这个程序会输出下面的结果:

aGVsbG8gd29ybGQ
hello world
总结

Base64 是一个简单但非常有用的编码标准,可以将任何类型的数据编码为 ASCII 字符。Ruby 的 Base64 模块为我们提供了非常方便的编码和解码接口,而且还支持 URL 安全的编码。如果你有需要在 ASCII 环境中传输或保存二进制数据,那么 Base64 可能会是很好的选择。