2012-05-30 5 views
2

Я ищу простой способ кодирования строки с использованием base64. В рубиновом движении я не могу просто использовать Base64encode Ruby, потому что я не могу его требовать. Поэтому я подумал, что могу использовать встроенную функцию Cocoa. Но у Cocoa нет функции Base64encode. Я нашел некоторые категории в NSData, но не знаю, как их использовать в проекте с рубиновым движением. Должен ли я создать для этого библиотеку статики?Rubymotion Base64

У меня такое ощущение, что я смотрю не в ту сторону, должно быть простое решение для этого?

ответ

8

Если вы посмотрите на источник для метода Base64.encode64, вы увидите, что он просто использует метод pack. Таким образом, вы можете кодировать/декодировать как это (обратите внимание, что вам нужно поставить, что вы хотите, чтобы закодировать внутри массива):

["my string"].pack("m") 
# => "bXkgc3RyaW5n\n" 

"bXkgc3RyaW5n\n".unpack("m").first 
# => "my string" 

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/base64/rdoc/Base64.html#method-i-encode64

+2

Спасибо! Я использую .pack ["m0"] для пропуска строки. – Raymond

+0

Да, это будет эквивалент метода 'strict_encode64' Base64. –

+0

Я думаю, вы хотите вызвать unpack на строку, а не на массив. 'Array # pack => String' и' String # unpack => Array' [отредактировал ваш ответ] – BananaNeil