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

15

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

对我来说看起来非常清晰和高效。唯一可能更快/更清晰的是一个本地挂钩,可以完全执行“hex_to_base64_digest”方法。 - maerics
1个回答

30

谢谢,看起来可能是这样。只是似乎将每个参数包装在数组中很不整洁。 - steveh7
2
如果有人想从Base64转换为Hex,下面是我使用的方法。def base64_to_hex(base64_string) base64_string.scan(/.{4}/).map do |b| b.unpack('m0').first.unpack('H*') end.join end - Rahul Dess

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接