[python] Re: Začiatočník - bitové operace
geon
geon na post.cz
Pátek Říjen 21 09:30:12 CEST 2005
Jak jsem psal: nevím, nenašel jsem žádný modul který by přímo nativně
podporoval bitově i bytově orientované operace. Ale jak jsem taky psal,
neměl by být problém si ty operace ve formě funkcí, nebo pokud to
založíš novou třídu, a přetížíš operátory + - / * , tak budeš moci
nadmíru přirozeně využívat tyto znaménka i při bitově/bytově
orientovaných operacích. V obou případech bude asi lepší, mít
10110011001 uloženo jako řetězec (ne jako Int) a při operacích s tím
nějak počítat....
Byla by to pěkná knihovna, kdyby se ti to povedlo, fakt jsem nic
podobného nenašel.
Příklad : posun doleva:
def vlevokrok(what):
assert(type(what)==type(""))
what=what+"0"
return what[1:]
Jo?
geon
Fráj-centrum napsal(a):
> Vďaka za odpoveď, aj keď tak trochu mimo. Nemám problém s bitmi ale
> bytmi.
> Presnejšie potrebujem komunikovať s mikroprocesorom. Telegram bude v
> ASCII znakoch, ale niektoré veci by mali byť ako jednoduché byty,
> napr. adresa, kontrolný súčet, stavová informácia a pod.
> Ak by som chcel iba konštantu, tak to nie je problém do Stringu vložiť
> jeden byte ako nejaký kód. Ale potom už s tým neviem pohnúť
> (inkrementácia a pod.). Prípadne ak nad tým urobím matematickú
> operáciu, prevedie to automaticky na Int a už to neviem napchať do
> Stringu ako jeden znak.
>
> ----- Original Message ----- From: "geon" <geon na post.cz>
> Newsgroups: cz.comp.lang.python
> Sent: Thursday, October 20, 2005 10:47 PM
> Subject: Re: Začiatočník - bitové operace
>
>
>> bobo napsal(a):
>>
>>> Skúšam prvé nesmelé kroky s Pytonom. Preštudoval som pár tutoriálov
>>> a príkladom. Potrebujem pracovať s premennou typu Byte. Predtým som
>>> programoval v C a tam to nebol problém, ale Pyton mi to konvertuje
>>> na Int.
>>> Nevie mi niekto pomôcť radou???
>>>
>>>
>>
>> Python nezná proměnnou typu Byte. Vše co mu napíšeš jako číslo, je
>> obyčejné číslo. K tomu jsou zaměřeny i bitově orientované operace,
>> které správně fungují nad obyčejnými čísly a vrací obyčejné číslo.
>> Bitový převod i obě konverze se dějí "uvnitř".
>>
>> >>> 5 <<2
>> 20
>> >>> 5>>2
>> 1
>> >>> int(str(101))
>> 101
>> >>> int(str(101),2)
>> 5
>>
>> Máš-li tedy proměnnou "typu byte", musíš z ní nejdříve udělat
>> obyčejné číslo, pak použít operaci a výsledek zpětně převést na
>> "byte". Na zpětný převod je nejlépe si udělat funkci, protože pokud
>> vím, Python toto nemá v základní výbavě.
>>
>> A nebo si můžeš udělat funkce přímo na bitový posun nad císly tyu
>> 10110011 a ušetřit tak převody mezi číselnými soustavami.... Možná i
>> na to existuje nějaký modul, ale na prosté bitové operace by neměl
>> být problém vymyslet funkce....
>>
>> --
>> geon
>> Vyjímka je pravidlo. Rekurzivní.
>
>
>
>
>
Další informace o konferenci Python