在Ruby中将十六进制摘要转换为base64

ste*_*eh7 10 ruby base64 hex md5 digest

我有一个文件的MD5十六进制摘要的字符串表示,我想转换为base64,以便在上传时使用Content-MD5 HTTP标头.是否有比以下更清晰或更有效的机制?

def hex_to_base64_digest(hexdigest)
  [[hexdigest].pack("H*")].pack("m").strip
end

hex_digest = "65a8e27d8879283831b664bd8b7f0ad4"
expected_base64_digest = "ZajifYh5KDgxtmS9i38K1A=="

raise "Does not match" unless hex_to_base64_digest(hex_digest) === expected_base64_digest
Run Code Online (Sandbox Code Playgroud)

dbe*_*hur 23

对我来说似乎非常清晰和有效.您可以通过为'm'包格式指定0计数来保存对条带的调用(如果count为0,则不添加换行,请参阅RFC 4648)

def hex_to_base64_digest(hexdigest)
  [[hexdigest].pack("H*")].pack("m0")
end
Run Code Online (Sandbox Code Playgroud)

  • 如果有人从 Base64 到 Hex,下面就是我使用的方法。``` *def base64_to_hex(base64_string) base64_string.scan(/.{4}/).map do |b| b.unpack('m0').first.unpack('H*') end.join end* ``` (2认同)