plist_values['HashData'].join("").unpack('m')[0].each_byte do |b|
hash_decoded << sprintf("%02X", b)
end
我需要將它翻譯成其他語言。據我瞭解,它將'HashData'數組的所有內容放入一個字符串中,然後從Base64解碼出來,但接下來呢? 你可以給我寫一個一步一步的解釋它做什麼? 在此先感謝!需要一些紅寶石翻譯
plist_values['HashData'].join("").unpack('m')[0].each_byte do |b|
hash_decoded << sprintf("%02X", b)
end
我需要將它翻譯成其他語言。據我瞭解,它將'HashData'數組的所有內容放入一個字符串中,然後從Base64解碼出來,但接下來呢? 你可以給我寫一個一步一步的解釋它做什麼? 在此先感謝!需要一些紅寶石翻譯
join("")
連接數組中的所有字符串(或調用to_s
時數組中的每個元素返回)。unpack('m')
從docs解碼字符串(並假定它是base64編碼)。sprintf("%02X", b)
from docs以大寫字母返回十六進制表示形式。hash_decoded << ..
追加十六進制表示的字符串底線是,你得到一個代表參加字符串中plist_values['HashData']
十六進制版本(與大寫字母)的字符串。
但它*不*編碼字符串到base64,它*解碼* base64回到(大概)原始字符串。 – DigitalRoss
@DigitalRoss你是對的。我不知道我在想什麼。固定。 – Candide
它從plist_values
(帶有密鑰'HashData'
的那個)解碼base64值並將其轉換爲可打印的十六進制。
我已經回答了這個問題,但爲了使其適合SO系統並使其答案對其他訪問者有用,最好問一個具體問題,至少在標題中。像「解包('m')做什麼?」。然後有人可以谷歌或得到一個相關的問題回答。如果您不介意,某些其他貢獻者可以編輯您的問題並進行概括。 – DigitalRoss