2017-05-18 5 views
1

Ich habe eine Zeichenfolge a = "hello". Ich kann es konvertieren zu stützen 2 oder Base 16 unpack mit:Pack/Unpack und Base64 in Ruby

a.unpack('B*') 
# => ["0110100001100101011011000110110001101111"] 

a.unpack('H*') 
# => ["68656c6c6f"] 

zu konvertieren 64 zu stützen, habe ich versucht pack:

[a].pack('m0') 
# => "aGVsbG8=" 

aber das Ergebnis ist nicht das, was ich erwartet hatte. Ich dachte, dass, wenn ich eine binäre Darstellung oder eine Zeichenfolge habe, um es in geteilte Teile darzustellen, ich unpack verwenden sollte. Aber es stellte sich nicht heraus. Bitte hilf mir, es zu verstehen.

+3

So sieht base64 aus; Es verwendet 6-Bit-Zeichen, um einen 8-Bit-Stream zu codieren (im Prinzip 4 Zeichen für jeweils 3 Bytes). Was hast du erwartet? – Joe

+0

Sawa hat meine Frage falsch bearbeitet. Meine Erwartung war nicht über das Ergebnis, Erwartung war darüber, warum wir pack verwenden, um zu base64 zu konvertieren und entpacken für base16 und base2 – airled

Antwort

2

Der codierte Text korrekt ist, verwenden Sie unter Online-Tool zur Validierung:
https://www.base64encode.org/

Text:
hallo

Encoded Base64:
aGVsbG8 =

Nützliche Ressourcen :
https://idiosyncratic-ruby.com/4-what-the-pack.html

+0

Danke für die Antwort. Aber meine Ausgangsfrage war nicht das Ergebnis des Packs (Sawa hat meine Frage falsch bearbeitet). Meine wahre Frage war, warum zum Konvertieren von String/Binär zu Base64 Ruby Pack verwendet, aber für die Konvertierung zu Base2 oder Base16 verwendet es das Entpacken. Warum nicht zum Beispiel 'a.unpack ('m0')' – airled

Verwandte Themen