2011-04-07 10 views
4

"AAAAAAAAAI ="와 같은 Base64 값을 해당 정수로 변환하고 싶습니다. Base64.decode64로 번거롭지 만 솔루션의 일부가 될지는 분명하지 않았습니다.Base64 문자열을 Ruby의 정수로 변환

irb > require 'base64' 
=> true 
irb > Base64.decode64('AAAAAAAAABI=') 
=> "\x00\x00\x00\x00\x00\x00\x00\x12" 
+0

ㅎ! 첫 번째 'A'를 이진 값 (16 진수로 표시)으로 변환하여 64 비트 정수의 하위 8 진수로 저장했습니다. 첫 번째 직후에는 12 비트 (십진수) 이상의 64 비트 int가 저장되어있을 수 있습니다. 만약 당신이 그들을 보지 못한다면 어떻게 든 그것을 할 수 있습니까? 그것은 당신에게 무슨 일이 일어나는지 더 잘 보여줄 것입니다. –

답변

3

이것은 사용자가 작성한 것입니다. 그렇지 않은 경우 수행 할 수있는 작업에 대한 자세한 내용은 String#unpack을 참조하십시오.

require 'base64' 
i = Base64.decode64('AAAAAAAAABI=') 
i.unpack('q*').first 
# => 1297036692682702848 
+4

'unpack '을 사용한다면, base64 라이브러리를 제거하고'unpack'을 사용하여 완전히 할 수 있습니다; 실제로'Base64.decode64'는'unpack ("m"). first'로 구현되어 있으므로 코드는''AAAAAAAAABI = '. unpack ('m '). first.unpack ('q * ')와 동일합니다. 첫 번째 '. – sawa

관련 문제