[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