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

다른 언어로 번역해야합니다. 내가 이해 한대로, 'HashData'배열의 모든 내용을 문자열에 넣은 다음 Base64에서 디코딩합니다.하지만 다음은 무엇입니까? 나에게 단계별 설명을 적어 줄 수 있습니까? 미리 감사드립니다.루비 번역이 필요합니다.

+2

나는이 질문에 답을했지만 SO 시스템에 맞추어 답을 다른 방문자에게 유용하게 만들었습니다. 적어도 제목에서 특정 질문을하는 것이 좋습니다. "포장을 푸는 것은 무엇입니까 ('m')?). 그런 다음 누군가가 Google에 답변하거나 관련 질문에 답변 할 수 있습니다. 괜찮 으면 특정 기고자가 질문을 편집하고 일반화 할 수 있습니다. – DigitalRoss

답변

2
  • join("")은 배열의 모든 문자열 (또는 to_s을 호출 할 때 배열의 각 요소가 반환하는 값)을 연결합니다.
  • docsunpack('m')은 문자열을 디코드합니다 (base64로 인코딩 된 것으로 가정 함).
  • sprintf("%02X", b) (docs)은 대문자와 함께 16 진수 표현을 반환합니다.
  • hash_decoded << ..는 결론은 당신이 plist_values['HashData']에 결합 된 문자열 (대문자로) 진수 버전을 나타내는 문자열을 얻을 수있는 문자열

에 진수 표현을 추가합니다.

+0

하지만 * String을 base64로 인코딩하지 않습니다. * 원래의 String으로 * base64를 다시 디코딩합니다. – DigitalRoss

+0

@DigitalRoss 네 말이 맞아. 내가 뭘 생각하는지 모르겠다. 결정된. – Candide

3

plist_values (키가 'HashData' 인 base64 값)을 디코딩하고 인쇄 가능한 16 진수로 변환합니다.

관련 문제