98
Kapitola 7 Bajtové objekty
● Je-li to iterovatelný objekt poskytující celá čísla v rozsahu 0 <= x <256, vytvoří se string s posloupností těchto čísel. ● Je-li to textový string, je třeba zadat kódování, v němž se budou dané hodnoty ukládat. Vytvoří se pak bajtový string s posloupností kódů zadaných znaků. ● Je-li to objekt implementující buffer protocol, bude vytvářený string inicializován obsahem jeho vyrovnávací paměti (bufferu). (Příklad s tímto typem objektu ve výpisu 7.2 nenajdete.) Všechna uvedená volání s výjimkou použití stringu vyžadovala pouze jeden argument. Při použití stringu je třeba zadat nejméně dva argumenty. Význam argumentu errors zde nebudu rozebírat, je vysvětlen v rámci popisu metody open() v podkapitole 11.1 Otevření datového proudu na straně 130. Výpis 7.2: 1 2 3 4 5 6 7 8 9 10 11 12 13
Vytvoření bajtových stringů pomocí konstruktoru a metody fromhex()
>>> bytes() # Bezparametrický konstruktor vytvoří string nulové délky b'' >>> bytes(3) # Celočíselný argument zadá délku stringu s nulovými bajty b'\x00\x00\x00' >>> bytes(range(65, 71)) # Iterovatelný objekt dodá jednotlivé hodnoty b'ABCDEF' >>> bytes('Příliš', 'cp1250') # Všechny znaky jsou jednobajtové b'P\xf8\xedli\x9a' >>> bytes('Příliš', 'utf8') # Některé znaky zabírají více bajtů b'P\xc5\x99\xc3\xadli\xc5\xa1' >>> bytes.fromhex('5079 74 68 6f6e') # Zadání posloupnosti hexa hodnot b'Python' >>>
Použití třídní tovární metody fromhex() Další možností vytvoření bajtového stringu je použití třídní tovární metody fromhex(), které se jako argument zadá string s dvoucifernými hexadecimálními hodnotami zadávaných čísel (k malým hodnotám tak musíme přidat vedoucí nulu – např. 01). Případné mezery či jiné bílé znaky mezi jednotlivými hodnotami funkce ignoruje. Delší posloupnosti je tedy možné zadávat i na více řádcích. Ukázka možného zadání je ve výpisu 7.2 na řádku 11.
7.3 Třída bytearray – zadávání bajtových polí
Pro zadávání bajtových polí platí prakticky totéž co pro zadávání bajtových stringů. Jediný rozdíl spočívá v tom, že bajtová pole nemají žádný literál, takže chcete-li jej z nějakého důvodu použít, musíte zadat bajtový string a ten pak zadat jako iterovatelný argument konstruktoru třídy bytearray – např. 66_Python_LIB_ZLOM.doc; verze 1.02.9180_2022-12-23_pá_02-16_
Strana 98 z 326 Ukázka elektronické knihy, UID: KOS519935