Python Language
Moduł base64
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()
są 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!