12

我有一个文件的 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
4

1 回答 1

26

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

def hex_to_base64_digest(hexdigest)
  [[hexdigest].pack("H*")].pack("m0")
end
于 2012-04-03T05:13:46.533 回答