12

ファイルの MD5 16 進数ダイジェストの文字列表現があり、アップロード時に Content-MD5 HTTP ヘッダーを使用するために base64 に変換したいと考えています。以下よりも明確で効率的なメカニズムはありますか?

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 に答える