2011-08-04 11 views
5

Dokumentacja API innych firm, które pracuję z państw „[O] ur API akceptuje tylko wyściełane Base64 zakodowane ciągi”Co to są wyściełane ciągi zakodowane w Base64 i jak mogę je wygenerować w rubinach?

Co to są "wyściełane struny zakodowane w Base64" i jak mogę je wygenerować w Ruby. Poniższy kod jest moją pierwszą próbą utworzenia sformatowanych danych JSON przekonwertowanych na Base64.

xa = Base64.encode64(a.to_json) 
+0

http://pl.wikipedia.org/wiki/Base64#Padanie tego może pomóc – Earlz

Odpowiedz

5

Wypełnienie, o którym mówią, jest częścią samego Base64. Na końcu jest "=" i "==". Base64 koduje pakiety 3 bajty na 4 zakodowane znaki. Więc jeśli dane wejściowe ma długość n i

  • n% 3 = 1 => "==" na końcu dla dopełnienia
  • n% 3 = 2 => "=" na końcu dla dopełnienia

Nie musisz zmieniać kodu.

2

Wygląda jak domyślne klocki biblioteczne base64; dopełnienie w Base64 byłoby znakami = na końcu danych.

można zobaczyć uruchamiając następujące polecenia w konsoli IRB:

irb(main):002:0> require 'base64' 
=> true 
irb(main):003:0> Base64.encode64('a') 
=> "YQ==\n" 

Bez wyściółki, nie mógł być pewien, czy YQ było wszystko, czy to było czegoś brakuje.

Powiązane problemy