Zoeken…


Invoering

Base 64-codering vertegenwoordigt een algemeen schema voor het coderen van binaire bestanden in ASCII-tekenreeksindeling met radix 64. De base64-module maakt deel uit van de standaardbibliotheek, wat betekent dat deze samen met Python wordt geïnstalleerd. Inzicht in bytes en strijkers is cruciaal voor dit onderwerp en kan worden beoordeeld hier . In dit onderwerp wordt uitgelegd hoe u de verschillende functies en nummerbases van de base64-module kunt gebruiken.

Syntaxis

  • 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)

parameters

Parameter Beschrijving
base64.b64encode(s, altchars=None)
s Een bytes-achtig object
altchars Een bytesachtig object met een lengte van meer dan 2 tekens om de '+' en '=' tekens te vervangen bij het maken van het Base64-alfabet. Extra tekens worden genegeerd.
base64.b64decode(s, altchars=None, validate=False)
s Een bytes-achtig object
altchars Een bytesachtig object met een lengte van meer dan 2 tekens om de '+' en '=' tekens te vervangen bij het maken van het Base64-alfabet. Extra tekens worden genegeerd.
validate Als valide Waar is, worden de tekens die niet in het normale Base64-alfabet of het alternatieve alfabet voorkomen, niet weggegooid vóór de opvulcontrole
base64.standard_b64encode(s)
s Een bytes-achtig object
base64.standard_b64decode(s)
s Een bytes-achtig object
base64.urlsafe_b64encode(s)
s Een bytes-achtig object
base64.urlsafe_b64decode(s)
s Een bytes-achtig object
b32encode(s)
s Een bytes-achtig object
b32decode(s)
s Een bytes-achtig object
base64.b16encode(s)
s Een bytes-achtig object
base64.b16decode(s)
s Een bytes-achtig object
base64.a85encode(b, foldspaces=False, wrapcol=0, pad=False, adobe=False)
b Een bytes-achtig object
foldspaces Als foldspaces True is, wordt het teken 'y' gebruikt in plaats van 4 opeenvolgende spaties.
wrapcol Het aantal tekens vóór een nieuwe regel (0 betekent geen nieuwe regels)
stootkussen Als pad True is, worden de bytes opgevuld tot een veelvoud van 4 voordat ze worden gecodeerd
adobe Als Adobe True is, wordt de gecodeerde reeks omlijst met '<~' en '' ~> 'zoals gebruikt met Adobe-producten
base64.a85decode(b, foldspaces=False, adobe=False, ignorechars=b'\t\n\r\v')
b Een bytes-achtig object
foldspaces Als foldspaces True is, wordt het teken 'y' gebruikt in plaats van 4 opeenvolgende spaties.
adobe Als Adobe True is, wordt de gecodeerde reeks omlijst met '<~' en '' ~> 'zoals gebruikt bij Adobe-producten
ignorechars Een bytesachtig object van tekens om te negeren in het coderingsproces
base64.b85encode(b, pad=False)
b Een bytes-achtig object
stootkussen Als pad True is, worden de bytes opgevuld tot een veelvoud van 4 voordat ze worden gecodeerd
base64.b85decode(b)
b Een bytes-achtig object

Opmerkingen

Tot Python 3.4 uitkwam, werkten base64-coderings- en decoderingsfuncties alleen met bytes of bytearray typen. Nu accepteren deze functies elk bytes-achtig object .

Codering en decodering Base64

Om de base64-module in uw script op te nemen, moet u deze eerst importeren:

import base64

De codeer- en decodeerfuncties van base64 vereisen beide een bytesachtig object . Om onze string in bytes te krijgen, moeten we deze coderen met de ingebouwde codeerfunctie van Python. Meestal wordt de UTF-8 codering gebruikt, maar een volledige lijst van deze standaardcoderingen (inclusief talen met verschillende tekens) vindt u hier in de officiële Python-documentatie. Hieronder is een voorbeeld van het coderen van een string in bytes:

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

De uitvoer van de laatste regel zou zijn:

b'Hello World!'

Het b voorvoegsel wordt gebruikt om aan te geven dat de waarde een bytes-object is.

Om Base64 deze bytes te coderen, gebruiken we de functie base64.b64encode() :

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

Die code zou het volgende opleveren:

b'SGVsbG8gV29ybGQh'

die zich nog steeds in het bytes-object bevindt. Om een string uit deze bytes te krijgen, kunnen we de methode decode() Python gebruiken met de UTF-8 codering:

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

De output zou dan zijn:

SGVsbG8gV29ybGQh

Als we de tekenreeks willen coderen en vervolgens decoderen, kunnen we de methode base64.b64decode() gebruiken:

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)

Zoals je misschien had verwacht, zou de uitvoer de oorspronkelijke tekenreeks zijn:

Base64 Encoded: SGVsbG8gV29ybGQh
Hello World!

Codering en decodering Base32

De base64-module bevat ook coderings- en decoderingsfuncties voor Base32. Deze functies lijken erg op de Base64-functies:

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)

Dit zou de volgende uitvoer opleveren:

Base32 Encoded: JBSWY3DPEBLW64TMMQQQ====
Hello World!

Codering en decodering Base16

De base64-module bevat ook coderings- en decoderingsfuncties voor Base16. Base 16 wordt meestal hexadecimaal genoemd . Deze functies lijken erg op de functies Base64 en 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)

Dit zou de volgende uitvoer opleveren:

Base16 Encoded: 48656C6C6F20576F726C6421
Hello World!

Codering en decodering ASCII85

Adobe heeft zijn eigen codering gemaakt, ASCII85 genaamd , die vergelijkbaar is met Base85, maar zijn verschillen heeft. Deze codering wordt vaak gebruikt in Adobe PDF-bestanden. Deze functies zijn uitgebracht in Python versie 3.4. Anders zijn de functies base64.a85encode() en base64.a85encode() vergelijkbaar met de vorige:

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)

Dit levert het volgende op:

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

Codering en decodering Base85

Net als de functies Base64, Base32 en Base16 zijn de coderings- en decoderingsfuncties van base64.b85encode() en 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)

die het volgende uitvoert:

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow