Szukaj…


Wprowadzenie

Kodowanie Base 64 reprezentuje wspólny schemat kodowania plików binarnych do formatu łańcucha ASCII przy użyciu Radix 64. Moduł base64 jest częścią standardowej biblioteki, co oznacza, że instaluje się wraz z Pythonem. Zrozumienie bajtów i ciągów ma kluczowe znaczenie dla tego tematu i można je przejrzeć tutaj . W tym temacie wyjaśniono, jak korzystać z różnych funkcji i baz liczbowych modułu base64.

Składnia

  • base64.b64encode (s, altchars = None)
  • base64.b64decode (s, altchars = None, validate = False)
  • base64.standard_b64encode (s)
  • base64.standard_b64decode (s)
  • base64.urlsafe_b64encode (s)
  • base64.urlsafe_b64decode (s)
  • base64.b32encode (s)
  • base64.b32decode (s)
  • base64.b16encode (s)
  • base64.b16decode (s)
  • base64.a85encode (b, foldspaces = False, wrapcol = 0, pad = False, adobe = False)
  • base64.a85decode (b, foldpaces = False, adobe = False, ignorechars = b '\ t \ n \ r \ v')
  • base64.b85encode (b, pad = False)
  • base64.b85decode (b)

Parametry

Parametr Opis
base64.b64encode(s, altchars=None)
s Obiekt podobny do bajtów
ołtarze Obiekt podobny do bajtu o długości 2+ znaków, który zastępuje znaki „+” i „=” podczas tworzenia alfabetu Base64. Dodatkowe znaki są ignorowane.
base64.b64decode(s, altchars=None, validate=False)
s Obiekt podobny do bajtów
ołtarze Obiekt podobny do bajtu o długości 2+ znaków, który zastępuje znaki „+” i „=” podczas tworzenia alfabetu Base64. Dodatkowe znaki są ignorowane.
uprawomocnić Jeśli valide ma wartość True, znaki spoza normalnego alfabetu Base64 lub alfabetu alternatywnego nie są odrzucane przed sprawdzeniem wypełnienia
base64.standard_b64encode(s)
s Obiekt podobny do bajtów
base64.standard_b64decode(s)
s Obiekt podobny do bajtów
base64.urlsafe_b64encode(s)
s Obiekt podobny do bajtów
base64.urlsafe_b64decode(s)
s Obiekt podobny do bajtów
b32encode(s)
s Obiekt podobny do bajtów
b32decode(s)
s Obiekt podobny do bajtów
base64.b16encode(s)
s Obiekt podobny do bajtów
base64.b16decode(s)
s Obiekt podobny do bajtów
base64.a85encode(b, foldspaces=False, wrapcol=0, pad=False, adobe=False)
b Obiekt podobny do bajtów
spacje Jeśli spacjami jest Prawda, zamiast 4 kolejnych spacji zostanie użyta litera „y”.
wrapcol Znaki liczbowe przed znakiem nowej linii (0 oznacza brak nowych linii)
Podkładka Jeśli pad ma wartość True, bajty są dopełniane do wielokrotności 4 przed kodowaniem
cegła suszona na słońcu Jeśli adobe ma wartość True, zakodowany z sekwencją z powinien być otoczony ramkami „<~” i „” ~> ”, jak w przypadku produktów Adobe
base64.a85decode(b, foldspaces=False, adobe=False, ignorechars=b'\t\n\r\v')
b Obiekt podobny do bajtów
spacje Jeśli spacjami jest Prawda, zamiast 4 kolejnych spacji zostanie użyta litera „y”.
cegła suszona na słońcu Jeśli adobe ma wartość True, zakodowany z sekwencją z powinien być otoczony ramkami „<~” i „” ~> ”, jak w przypadku produktów Adobe
ignorechars Bajtowy obiekt znaków do zignorowania w procesie kodowania
base64.b85encode(b, pad=False)
b Obiekt podobny do bajtów
Podkładka Jeśli pad ma wartość True, bajty są dopełniane do wielokrotności 4 przed kodowaniem
base64.b85decode(b)
b Obiekt podobny do bajtów

Uwagi

Do czasu bytearray Python 3.4 funkcje kodowania i dekodowania base64 działały tylko z bytes lub typami bytes . Teraz te funkcje akceptują dowolny obiekt podobny do bajtów .

Kodowanie i dekodowanie Base64

Aby dołączyć moduł base64 do skryptu, musisz go najpierw zaimportować:

import base64

Funkcje kodowania i dekodowania base64 wymagają obiektu podobnego do bajtów . Aby przekształcić nasz ciąg w bajty, musimy go zakodować za pomocą wbudowanej funkcji kodowania Pythona. Najczęściej stosuje się UTF-8 , jednak pełna lista tych standardowych kodowań (w tym języków z różnymi znakami) znajduje się tutaj w oficjalnej dokumentacji Pythona. Poniżej znajduje się przykład kodowania ciągu znaków w bajtach:

s = "Hello World!"
b = s.encode("UTF-8")

Wyjście ostatniego wiersza to:

b'Hello World!'

Prefiks b służy do oznaczenia, że wartość jest obiektem bajtów.

Aby Base64 zakodować te bajty, używamy funkcji base64.b64encode() :

import base64
s = "Hello World!"
b = s.encode("UTF-8")
e = base64.b64encode(b)
print(e)

Ten kod wyświetli następujące informacje:

b'SGVsbG8gV29ybGQh'

który wciąż znajduje się w obiekcie bajtów. Aby uzyskać ciąg z tych bajtów, możemy użyć metody decode() Pythona z UTF-8 :

import base64
s = "Hello World!"
b = s.encode("UTF-8")
e = base64.b64encode(b)
s1 = e.decode("UTF-8")
print(s1)

Dane wyjściowe byłyby wtedy:

SGVsbG8gV29ybGQh

Gdybyśmy chcieli zakodować ciąg, a następnie zdekodować, moglibyśmy użyć metody base64.b64decode() :

import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base64 Encode the bytes
e = base64.b64encode(b)
# Decoding the Base64 bytes to string
s1 = e.decode("UTF-8")
# Printing Base64 encoded string
print("Base64 Encoded:", s1)
# Encoding the Base64 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base64 bytes
d = base64.b64decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)

Jak można się było spodziewać, wyjściem będzie oryginalny ciąg znaków:

Base64 Encoded: SGVsbG8gV29ybGQh
Hello World!

Kodowanie i dekodowanie Base32

Moduł base64 zawiera również funkcje kodowania i dekodowania dla Base32. Te funkcje są bardzo podobne do funkcji Base64:

import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base32 Encode the bytes
e = base64.b32encode(b)
# Decoding the Base32 bytes to string
s1 = e.decode("UTF-8")
# Printing Base32 encoded string
print("Base32 Encoded:", s1)
# Encoding the Base32 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base32 bytes
d = base64.b32decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)

To dałoby następujące wyniki:

Base32 Encoded: JBSWY3DPEBLW64TMMQQQ====
Hello World!

Kodowanie i dekodowanie bazy 16

Moduł base64 zawiera również funkcje kodowania i dekodowania dla Base16. Podstawa 16 jest najczęściej określana jako szesnastkowa . Te funkcje są bardzo podobne do funkcji Base64 i Base32:

import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base16 Encode the bytes
e = base64.b16encode(b)
# Decoding the Base16 bytes to string
s1 = e.decode("UTF-8")
# Printing Base16 encoded string
print("Base16 Encoded:", s1)
# Encoding the Base16 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base16 bytes
d = base64.b16decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)

To dałoby następujące wyniki:

Base16 Encoded: 48656C6C6F20576F726C6421
Hello World!

Kodowanie i dekodowanie ASCII85

Adobe stworzyło własne kodowanie o nazwie ASCII85, które jest podobne do Base85, ale ma swoje różnice. To kodowanie jest często używane w plikach Adobe PDF. Te funkcje zostały wydane w Pythonie w wersji 3.4. W przeciwnym razie funkcje base64.a85encode() i base64.a85encode() są podobne do poprzednich:

import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# ASCII85 Encode the bytes
e = base64.a85encode(b)
# Decoding the ASCII85 bytes to string
s1 = e.decode("UTF-8")
# Printing ASCII85 encoded string
print("ASCII85 Encoded:", s1)
# Encoding the ASCII85 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the ASCII85 bytes
d = base64.a85decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)

To powoduje, że:

ASCII85 Encoded: 87cURD]i,"Ebo80
Hello World!

Kodowanie i dekodowanie Base85

Podobnie jak funkcje Base64, Base32 i Base16, funkcjami kodowania i dekodowania base64.b85encode()base64.b85encode() i base64.b85decode() :

import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base85 Encode the bytes
e = base64.b85encode(b)
# Decoding the Base85 bytes to string
s1 = e.decode("UTF-8")
# Printing Base85 encoded string
print("Base85 Encoded:", s1)
# Encoding the Base85 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base85 bytes
d = base64.b85decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)

co daje następujące wyniki:

Base85 Encoded: NM&qnZy;B1a%^NF
Hello World!


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow