2012-11-20 84 views
1
plist_values['HashData'].join("").unpack('m')[0].each_byte do |b| 
    hash_decoded << sprintf("%02X", b) 
end 

我需要將它翻譯成其他語言。據我瞭解,它將'HashData'數組的所有內容放入一個字符串中,然後從Base64解碼出來,但接下來呢? 你可以給我寫一個一步一步的解釋它做什麼? 在此先感謝!需要一些紅寶石翻譯

+2

我已經回答了這個問題,但爲了使其適合SO系統並使其答案對其他訪問者有用,最好問一個具體問題,至少在標題中。像「解包('m')做什麼?」。然後有人可以谷歌或得到一個相關的問題回答。如果您不介意,某些其他貢獻者可以編輯您的問題並進行概括。 – DigitalRoss

回答

2
  • join("")連接數組中的所有字符串(或調用to_s時數組中的每個元素返回)。
  • unpack('m')docs解碼字符串(並假定它是base64編碼)。
  • sprintf("%02X", b) from docs以大寫字母返回十六進制表示形式。
  • hash_decoded << ..追加十六進制表示的字符串

底線是,你得到一個代表參加字符串中plist_values['HashData']十六進制版本(與大寫字母)的字符串。

+0

但它*不*編碼字符串到base64,它*解碼* base64回到(大概)原始字符串。 – DigitalRoss

+0

@DigitalRoss你是對的。我不知道我在想什麼。固定。 – Candide

3

它從plist_values(帶有密鑰'HashData'的那個)解碼base64值並將其轉換爲可打印的十六進制。