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 04:22 | Komunita

    V Praze probíhá Flock 2026, tj. konference pro přispěvatele a příznivce Fedory. Přednášky lze sledovat také na YouTube.

    Ladislav Hagara | Komentářů: 0
    dnes 04:00 | Nová verze

    Node-RED (Wikipedie, GitHub), webová aplikace postavená na Node.js pro vizuální programování a propojování hardwarových zařízení, API a online služeb, byl vydán ve verzi 5.0. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    dnes 02:00 | Nová verze

    Byla vydána nová verze 3.27.0 FreeRDP, tj. svobodné implementace protokolu RDP (Remote Desktop Protocol). Opraveno bylo 5 zranitelností.

    Ladislav Hagara | Komentářů: 0
    včera 23:11 | Komunita

    Řídící výbor GCC schválil záměr do GCC začlenit backend WebAssembly.

    Ladislav Hagara | Komentářů: 2
    14.6. 21:00 | Nová verze

    Po 9 týdnech vývoje od vydání Linuxu 7.0 oznámil Linus Torvalds vydání Linuxu 7.1. Přehled novinek a vylepšení na LWN.net: první a druhá polovina začleňovacího okna a časem také na Linux Kernel Newbies.

    Ladislav Hagara | Komentářů: 0
    14.6. 13:33 | Zajímavý software

    Cheat Engine (Wikipedie) je s verzí 7.7 k dispozici už také pro Linux. Jedná se o proprietární skener/debugger paměti používaný především k cheatování v počítačových hrách.

    Ladislav Hagara | Komentářů: 0
    13.6. 15:22 | IT novinky

    Vláda USA nařídila společnosti Anthropic pozastavit přístup k modelům Fable 5 a Mythos 5 pro všechny cizince, včetně zaměstnanců Anthropicu.

    Ladislav Hagara | Komentářů: 8
    13.6. 02:22 | Nová verze

    Společnost Murena představila (YouTube) novou verzi 4.0 mobilního operačního systému /e/OS (Wikipedie) založeného na Androidu a LineageOS bez aplikací a služeb od Googlu.

    Ladislav Hagara | Komentářů: 0
    12.6. 16:33 | Bezpečnostní upozornění

    V Arch User Repository (AUR) bylo kompromitováno přes 400 opomíjených balíčků (jejich seznam). Útočník do nich začlenil škodlivý npm balíček atomic-lockfile, který krade citlivá data uživatelů. Publikována byla předběžná analýza spouštěného malwaru deps.

    Ladislav Hagara | Komentářů: 17
    12.6. 11:33 | Nová verze

    Homebrew, správce balíčků nejen pro macOS, byl vydán ve verzi 6.0.0 (seznam změn). Hlavními novinkami jsou bezpečnostní mechanismus tap trust kvůli důvěryhodnosti závislostí, vylepšení sandboxingu na Linuxu, interní JSON API nebo zlepšení výkonu.

    |🇵🇸 | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (16%)
     (31%)
     (3%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1914 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Převod off64_t na řetězec

    Jardík avatar 14.4.2006 22:04 Jardík | skóre: 40 | blog: jarda_bloguje
    Převod off64_t na řetězec
    Přečteno: 311×
    Chvilku jsem googlil, ale nikde jsem nenašel, jak převést na řetězec neznaménkové 64bit číslo jako je např. off64_t. Zkoušel jsem to pomocí sprintf, ale bezúspěšně.
    Věřím v jednoho Boha.

    Odpovědi

    Luboš Doležel (Doli) avatar 14.4.2006 22:07 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    sprintf, %llu
    Jardík avatar 14.4.2006 22:26 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    Bohužel to nefunguje:
    off64_t cislo = 1024*1024*1024*6;
    char buffer[500];
    sprintf( buffer, "%llu", cislo );
    
    Ukáže to 2147483648, což není správně.
    Věřím v jednoho Boha.
    Luboš Doležel (Doli) avatar 14.4.2006 22:35 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    Takhle to dělat nemůžete:
    test.c:10: warning: integer overflow in expression
    test.c:10: warning: overflow in implicit constant conversion
    Musíte alespoň za jedno číslo přidat ULL.
    $ ./test
    6442450944
    
    Jardík avatar 14.4.2006 22:39 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    I když dám ULL za všechny, tak to hodí stejně stejný výsledek. Nemůže to dělat kompilátor (MinGW)?
    Věřím v jednoho Boha.
    14.4.2006 22:37 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    Co tohle?
    sprintf(buffer, "%.0lf", (double) cislo);
    
    Jardík avatar 14.4.2006 22:44 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    Tohle funguje (s tím ULL), ale není double znaménkový? Co když budu mít číslo 2^64?
    Věřím v jednoho Boha.
    14.4.2006 22:46 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    Typ off_t je z podstaty věci také znaménkový.
    14.4.2006 22:46 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    A off64_t samozřejmě také.
    Jardík avatar 14.4.2006 22:59 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    Teď jsem se kouknul do sys/types.h a on je opravdu znaménkový. Takže se omlouvám za nesprávný výrok. Tím se ale také vše mění. Takže co teď předat funkci sprintf místo %llu a co psát za čísla místo ULL aby nedošlo k přetečení?
    Věřím v jednoho Boha.
    Luboš Doležel (Doli) avatar 14.4.2006 23:46 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    %lld a LL
    Jardík avatar 14.4.2006 23:58 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    off64_t cislo = 1024*1024*1024*6;
    char buffer[500];
    sprintf( buffer, "%lld", cislo );
    
    =-2147483648 = Špatně
    off64_t cislo = 1024LL*1024LL*1024LL*6LL;
    char buffer[500];
    sprintf( buffer, "%lld", cislo );
    
    =-2147483648 = Špatně
    off64_t cislo = 1024*1024*1024*6;
    char buffer[500];
    sprintf( buffer, "%.0lf", (double)cislo );
    
    =-2147483648 = Špatně
    off64_t cislo = 1024LL*1024LL*1024LL*6LL;
    char buffer[500];
    sprintf( buffer, "%.0lf", (double)cislo );
    
    =6442450944 = OK
    Zřejmě mi nic jiného nezbude a budu muset použít to přetypování. Zajímavé ale je, že tobě to funguje. Asi ten MinGW má fci sprintf nějakou divnou :-(.
    Věřím v jednoho Boha.
    15.4.2006 00:38 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    Proč se bráníte použít odpovídající makro 'PRId64', jak jsem vám poradil dříve?
    Jardík avatar 15.4.2006 11:57 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    Když jsem napsal sprintf( buffer, PRId64, cislo );, tak mi to ukázalo chybu, že proměnná není definována. Pak jsem se kouknul do toho hlavičkového souboru a zjistil, že musím před hlavičkový soubor připsat #define __STDC_FORMAT_MACROS. Poté se ale do bufferu dal řetězec "I64d". Pak jsem vyzkoušel sprintf( buffer, "%I64d", cislo); a ono to funguje :-). Díky moc za nakopnutí správným směrem.
    Věřím v jednoho Boha.
    Jardík avatar 15.4.2006 12:01 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    Hmm. Z hlavičkového souboru inttypes.h:
    /* 7.8.1 Macros for format specifiers
     * 
     * MS runtime does not yet understand C9x standard "ll"
     * length specifier. It appears to treat "ll" as "l".
     * The non-standard I64 length specifier causes warning in GCC,
     * but understood by MS runtime functions.
     */
    
    A pak mi nemá fungovat %lld a %llu.
    Věřím v jednoho Boha.
    14.4.2006 22:45 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Převod off64_t na řetězec
    Tak zkuste použít standardní hlavičkové soubory:
      #include <inttypes.h>
    
      ...
      
      printf(PRId64, cislo);
    

    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.