Odpověď na názor

Odpovídáte na názor k článku Manipulace s binárními datovými strukturami v Pythonu. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.

  • Včera 21:10

    lukyha
    Super článek! Jen pár výhrad bych měl.


    S využitím znaků b, h, i, l, q lze volit počet bajtů pro uložení celočíselné hodnoty. Postupně se jedná o 8, 16, 32, 64 a 128 bitů.

    ... mi nepřijde zcela validní. Na 64-bitovém pythonu nativně 128-bit integer asi nedostaneme. Nakonec i ve výstupu demonstračního skriptu více než 8 bajtů není.

    Rovněž by bylo dobré zmínit, že pokud není specifikovaná indianita/nativita tak platí že je použito nativního uspořádání bajtů, velikosti typů a zarovnání v "céčkovské" struktuře (proto taky ten název modulu struct). V takovém případě se může použít (ale nemusí) speciální znak "@". Pozor, ten má však jiný význam než v příkladech používaný "=". Při použití druhého zmiňovaného se nepoužije nativní velikosti nýbrž tzv. standardní což se ale obecně uplatňuje pro všechny případy krom "@" (viz. https://docs.python.org/3/library/struct.html#struct-alignment a https://docs.python.org/3/library/struct.html#format-characters), tedy i pro "<", ">" nebo "!". Rozdíl v chování pak lze jednoduše ověřit např.

    >>> print(struct.pack("@l", 42).hex(" ", 1))
    2a 00 00 00 00 00 00 00
    >>> print(struct.pack("l", 42).hex(" ", 1)) # To samé jako s použitím "@"
    2a 00 00 00 00 00 00 00
    >>> print(struct.pack("=l", 42).hex(" ", 1)) # Standardní velikost
    2a 00 00 00