abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:44 | Nová verze

    Byla vydána listopadová aktualizace aneb nová verze 1.107 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.107 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    včera 19:22 | Zajímavý článek

    Pornhub zveřejnil podrobné statistiky za rok 2025. V části věnované zařízením a technologiím se lze dočíst, že 87 % přenášených dat směrovalo na telefony, 2 % na tablety a 11 % na desktopy. Operační systém Linux běžel na 6,3 % desktopů. O 22,4 % více než před rokem. Firefox má na desktopu 8,4 % podíl.

    Ladislav Hagara | Komentářů: 1
    včera 13:11 | Pozvánky

    Chcete vědět, co se odehrálo ve světě techniky za poslední měsíc? Nebo si popovídat o tom, co zrovna bastlíte? Pak dorazte na prosincovou Virtuální Bastlírnu s mikrofonem a kamerou, nalijte si něco k pití a ponořte se s strahovskými bastlíři do diskuze u virtuálního piva o technice i všem možném okolo. O čem budou tentokrát strahováci referovat? Téměř každý už si všiml významného zdražení RAM a SSD, jsou zde ale i příjemnější zprávy. Průša uvádí

    … více »
    bkralik | Komentářů: 0
    včera 12:55 | Bezpečnostní upozornění

    Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) podporuje vyjádření partnerů ze Spojeného království, kteří upozorňují na škodlivé aktivity společností Anxun Information Technology (též „I-S00N“) (pdf) a Beijing Integrity Technology (též „Integrity Tech“) působících v kyberprostoru a sídlících v Čínské lidové republice (ČLR). Tyto společnosti jsou součástí komplexního ekosystému soukromých subjektů v ČLR,

    … více »
    Ladislav Hagara | Komentářů: 6
    včera 04:55 | IT novinky

    Společnost Pebble představila (YouTube) prsten s tlačítkem a mikrofonem Pebble Index 01 pro rychlé nahrávání hlasových poznámek. Prsten lze předobjednat za 75 dolarů.

    Ladislav Hagara | Komentářů: 6
    včera 04:22 | IT novinky

    Společnost JetBrains v listopadu 2021 představila nové IDE s názvem Fleet. Tento týden oznámila jeho konec. Od 22. prosince 2025 již nebude možné Fleet stáhnout.

    Ladislav Hagara | Komentářů: 1
    9.12. 21:22 | Nová verze

    Byl vydán Mozilla Firefox 146.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 146 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    9.12. 17:00 | IT novinky

    Před rokem převzala Digitální a informační agentura (DIA) vlastnictví a provoz jednotné státní domény gov.cz. Nyní spustila samoobslužný portál, který umožňuje orgánům veřejné moci snadno registrovat nové domény státní správy pod doménu gov.cz nebo spravovat ty stávající. Proces nové registrace, který dříve trval 30 dní, se nyní zkrátil na několik minut.

    Ladislav Hagara | Komentářů: 7
    9.12. 11:33 | IT novinky

    IBM kupuje za 11 miliard USD (229,1 miliardy Kč) firmu Confluent zabývající se datovou infrastrukturou. Posílí tak svoji nabídku cloudových služeb a využije růstu poptávky po těchto službách, který je poháněný umělou inteligencí.

    Ladislav Hagara | Komentářů: 0
    9.12. 01:55 | IT novinky

    Nejvyšší správní soud (NSS) podruhé zrušil pokutu za únik zákaznických údajů z e-shopu Mall.cz. Incidentem se musí znovu zabývat Úřad pro ochranu osobních údajů (ÚOOÚ). Samotný únik ještě neznamená, že správce dat porušil svou povinnost zajistit jejich bezpečnost, plyne z rozsudku dočasně zpřístupněného na úřední desce. Úřad musí vždy posoudit, zda byla přijatá opatření přiměřená povaze rizik, stavu techniky a nákladům.

    Ladislav Hagara | Komentářů: 13
    Jaké řešení používáte k vývoji / práci?
     (34%)
     (47%)
     (19%)
     (17%)
     (22%)
     (15%)
     (24%)
     (16%)
     (18%)
    Celkem 451 hlasů
     Komentářů: 18, poslední 2.12. 18:34
    Rozcestník

    Dotaz: čtečka bitů v C, převod do Pythonu

    2.8.2023 22:50 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    čtečka bitů v C, převod do Pythonu
    Přečteno: 509×
    Zdravím ...

    Mám zase takový specifický problém

    Jistý program ukládá 4 znaky neuvěřitelně šíleným způsobem, mám k dispozici makro v C, které slouží pro čtení těch znaků. Jako v C občas něco spíchnu, ale toto jen odhaduji, co vlastně dělá, jistý si nejsem. Navíc ty znaky potřebuju načíst v Pythonu ( tedy to makro z C přepsat do Pythonu ), ale dle popisu nějak nechápu, jak to funguje a to makro ... tápu.

    Toto je popis, jak jsou uloženy ty znaky ... to jsem vedle ..
     Bit offset               ...   76    80    84    88    92    96   100   104   108  ...
    Char boundaries           |    |-----1-----|-----2-----|-----3-----|-----4-----|    |
    Bits in byte order         0010 1010   0001 0111   0001 0011   0000 0011   0000 0010
    Bits in bit field order    0101 0100   1110 1000   1100 1000   1100 0000   0100 0000
    Char bits in byte order         0111   0010 0011   0001 0011   0001 0010   0000
    Hex vals of char bits               7 2         3 1         3 1         2 0
    Char val of char bits               'r'         '1'         '1'         ' '
    

    a makro, které to načtení provede : (taky jen odhaduju, co to vlastně dělá - nějaké bitové posuny, masky ale jen hádám )
    #define read_bits(data,start,size) \
        ((*((uint64_t*) &(data)[(start) / 8]) >> ((start) & 7)) & (((uint64_t)1 << (size)) - 1))
    Osvětlil by mi někdo, co to makro jako dělá ? Tedy tápu, proč je tam uint64_t a hvězdička u toho na začátku, možná je to vymezení typu, se kterým se bude to šibování provádět, ale jako jsem z toho mimo

    Děkuji za výklad....

    Řešení dotazu:


    Odpovědi

    3.8.2023 10:07 X
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu
    Muzes poskytnout nejaka vzorova data a vystup? To bude mozna jednoduzsi.
    3.8.2023 10:14 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu

    Ty explicitně napsané bitové operace vypadají složitější, než je nutné.

    C i C++ mají bitfield (struct s dvojtečkami). Tím by se možná dalo něco zjednodušit. (Ne pokud tam je nějaká hodně netriviální transformace nebo komprese, nicméně pokud jde o extrakci / ukládání některých specifických bitů ve dlouhém řetězci bitů, tam bitfield opravdu hustě pomáhá.)

    Co se Pythonu týká, asi bych tu funkci pro manipulaci s bity sesmolil v C nebo C++ a pak zpřístupnil přes SWIG v Pythonu.

    3.8.2023 23:45 luky
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu
    To je neprenositelne, protoze poradi alokovani bitfieldu neni definovane standardem. Posuvy definovane jsou.
    Řešení 1× (Milan Uhrák (tazatel))
    3.8.2023 10:20 Wivern
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu
    Zkuste toto def read_bits(data, start, size): return ((int.from_bytes(data[start // 8:], 'big') >> (start % 8)) & ((1 << size) - 1))
    3.8.2023 11:16 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu
    šílené .... a ono to fakt funguje (jen místo big musím dát little )

    jinak celá omáčka toho je tady.
    3.8.2023 12:52 X
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu
    A pri tom stacilo si to precist:
    Rather than describe everything in terms of byte offsets, I'm going to define the layout as a series of variable-length bit fields. This is a critical part of the item format, because the position of many of the fields can change depending on what comes before it. If I say a certain value is a 3-bit field starting at bit position 150, for example, this translates to bits 6 and 7 of the byte 18 and bit 0 of byte 19 in the data structure. You can read an arbitrary bit field programatically using the following code (in C):

    #define read_bits(start,size) \ ((*((unsigned long *) &data[(start) / 8]) >> ((start) & 7)) & ((1 << (size)) - 1))
    3.8.2023 15:06 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu
    Na tuto část jsem nenarazil, ale myslíte, že by mi to nějak osvětlilo, co ten C kód skutečně dělá abych to mohl přepsat do Pythonu?
    3.8.2023 17:15 X
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu
    Amatersky bych to popsal takto:

    &data[(start) / 8] -- dereference na vychozi byte 150 / 8 = 18
     17          18      19
    ........|......xx|x.......|...
          ->
    
    (start) & 7 -- zjistim offset 8 & 7 = 0, 9 & 7 = 1 .. 150 & 7 = 6
    ........|......xx|x.......|...
          ->       67|0
    
    (&data[(start) / 8]) >> ((start) & 7) -- posunu se na zacatek
    ........|......xx|x.......|...
                 ->67|0
    
    ((1 << (size)) - 1) -- pripravim si "masku" 1 << 3 = 8 - 1 = 7 0x00000111 - chci tri bity
    ........|......xx|x.......|...
                 ->67|0
    
    ((&data[(start) / 8]) >> ((start) & 7)) & ((1 << (size)) - 1)) -- Vyctu tri bity.

    Pytnon cte data po celych bytech a musel by si vyresit to "prekrivani" se hodnot..
    3.8.2023 17:17 X
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu
    prekryvani
    3.8.2023 17:41 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu
    To tvé osvtělení dává doplňkový obrázek toho, co ten kód vlastně dělá... Je to (alespoň pro mně) vcelku zajímavá exkurze do bitových operací v C na praktickém příkladu. Děkuji.

    Ten převod do Pythonu provedla Wivern, a skvěle to funguje ...
    3.8.2023 11:39 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: čtečka bitů v C, převod do Pythonu
    Jako v tom šoku z nabídnutého řešení jsem vám Wivern zapomněl poděkovat za snahu a čas ... Takže dodatečně díky.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.