Anonymní profil Odkin – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Odkin – Programujte.comAnonymní profil Odkin – Programujte.com

 

Příspěvky odeslané z IP adresy 213.191.98.–

Odkin
PHP › Co jste možná nikdy neřešili
8. 1. 2014   #186121

"beztak ty znaky uz davno cisla v ram jsou"

Právě proto je chci požívat k výpočtům bez zbytečných oklik. Uplatnění v praxi je naopak veliké protože:

a) Nemusím shánět funkci a "štelovat ji". Vzorec si dokážu napsat sám na jakoukoli situaci a můžu ho uvést v nejrychleji vypočítatelné podobě.

b) Vidím mnohem hlouběji do struktury programu. Nemůže mě překvapit žádný neočekávaný vstup, protože vždycky vím, co to vypočítá.

c) String využívá určitý algoritmus na principu array, takže tak snadno nepřeteče.

Odkin
PHP › Co jste možná nikdy neřešili
7. 1. 2014   #186075

Ench: Moje angličtina není nejhorší, ale nejsem si úplně jistý jak ta (zase) funkce funguje. Pochopil jsem to tak, že rozbalí string na znaky a ty pak udržuje v binárním kódu. ??? I tohle je zmiňované zdržování, ačkoli to už není takový rozdíl...

Ráno jsem musel jít na hodinu, tak jsem nestihl napsat, jakým způsobem bych tu proměnnou upravil, aby to změnilo hoj na doj.

$string = $string-($string/65536)*65536+6553600;

To je všechno. Kdyby mi to PHP vzalo, tak tenhle řádek změní první písmeno v jakémkoli stringu o třech znacích na d. Žádné okliky, žádné funkce, i když je to dost specifická situace.

Podobně jednoduché vzorce mě ale napadají pomalu na jakoukoli práci se stringem a strašně mě žere, že je nemůžu používat a musím místo nich hledat a kombinovat funkce.

dzejkob: Stále mi to opakujete a já tomu stále nemohu uvěřit. :) Jen protože se to běžně nepoužívá  neznamená, že to neexistuje. Už se tu objevilo mnoho funkcí, o kterých jsem neměl ani ponětí, protože jsem je nepotřeboval.

Té extenzi jsem bohužel vůbec neporozuměl. :(

Odkin
PHP › Co jste možná nikdy neřešili
7. 1. 2014   #186057

Původně jsem doufal, že řešení bude takhle jednoduché, ale $cislo = (int) "8654321" mi vrátí číslo 8654321. Já potřebuju, aby mi to v tomhle případě vrátilo 15822200832733745, což je datový obsah tohoto stringu braný jako číslo.

Integer by už samozřejmě přetekl, (nejen) proto chci pomocí matematiky měnit tuto datovou hodnotu přímo, bez zbytečných algoritmů, které by postup zdržovali.

----------------------

Zkusím dát jiný příklad - mějme vstup:

$text = "hoj";

String využívá osmi bitů, proto se tato data uloží jako:

011010000110111101101010

To odpovídá číslu:

6844266

Když teď provedu matematický výpočet, vyjde mi například číslo:

6582122

To v datech odpovídá:

011001000110111101101010

Pokud teď data vypíšu jako string, dostanu výstup:

doj

O to mi jde.

Odkin
PHP › Co jste možná nikdy neřešili
6. 1. 2014   #186050

dzejkob: Mluvil jsem o datové podobě ukládání, že to není jen "nějak". Vím, že to vyznělo mylně až namyšleně, ale už jsem to po odeslání neměl možnost opravit...

Chtěl jsem tím říct, že string je na 100% vypisován jako 256kové číslo. Další detaily kolem teď nejsou důležité, chci jen získat přístup k těm datům, abych mohl měnit jejich obsah pomocí matematiky.

KIIV: Nejsem si úplně jistý, jestli rozumím, jaký algoritmus navrhuješ, ale pokud by to měl počítač vážně takhle zkoušet, tak na tom ztratí tolik času, že by to bylo u delších textů znatelně cítit.

Hlavně není důvod k tak extrémním činům "jen abych našel jiný způsob". Každý programátor rád přijme funkci z knihovny a už se nestará jak dlouhá a komplexní může doopravdy být. Mě to zajímá, abych kód urychlil na jeho úkor čitelnosti.

Odkin
PHP › Co jste možná nikdy neřešili
6. 1. 2014   #186043

Celá tahle "debata" vznikla na tom, že každá funkce nějak funguje a substr evidentně pracuje se stringem jako s číslem.

Samozřejmě, že je jednodušší používat předem připravené funkce a jejich kombinace, ale to pak probíhají některé podoperace zbytečně, což se může projevit při zpracovávání velkého množství dat.

Proto jsem založil tohle vlákno, abych se dozvěděl, jak můžu string přimět, aby se choval jako číslo ve 256tkové soustavě, kterým doopravdy je. Já vím přesně, jak php string ukládá a proto se divím, že neexistuje jednoduchá odpověď jako "$&string obejde zákazy".

Odkin
PHP › Co jste možná nikdy neřešili
6. 1. 2014   #186039

P. S. Aby bylo jasno, pořád chci pracovat s tím číslem, akorát nevím jak, aby mi to PHP dovolil.

Odkin
PHP › Co jste možná nikdy neřešili
6. 1. 2014   #186037

Díky, tohle by možná mohlo být ono.

Ale vypadá to pořád jako funkce. Jsi si jistý, že je to čistý přístup k datům a ne jen další algoritmus? Trochu jsem po tom zapátral a ord se běžně používá pro intervaly, které musí odkazovat na svůj zdroj...

Jak můžu upravenou hodnotu přenést okamžitě zpátky? A bude to fungovat i na sadu znaků? Moc se mi to nezdá.

V sedmibitové ASCII by $string = "I'm not sure." měla odpovídat číslu 1418047858304405663494484654 (data dvojkové soustavy převedena na desítkovou). Tohle mi to nejspíš nevyplivne...

--------------

Když nad tím tak přemýšlím, to číslo se do integeru ani nevejde. :D Asi to vyžaduje pohyblivý interval. (Pane Bože co jsem to zas vymyslel.)

Odkin
PHP › Co jste možná nikdy neřešili
6. 1. 2014   #186010

OK, zkusím to jinak.

Existuje tabulka ASCII, která obsahuje běžně používané znaky pro 7 bitů dat. V praxi se sice mimo asijské země používá 8 bitů na znak, ale to teď dám stranou.

My (lidé) vnímáme STRING jako text, slova, atd, ale pro stroj, který ho vykresluje, se jedná o číslo ve 128čkové soustavě (tedy data jsou přímo brána jako číslo).

Já se vás v podstatě ptám, jak to mám v PHP udělat, aby mi R (string) vypsal jako 82 (integer).

A teď nehledám algoritmus. To by byla ztráta času. Chci přímo vzít data ve stringu a vypsat je jako číslo, aby to bez problému vzalo i 8 bitů.

-----------

S přístupem k tomuto číslu bych si už dokázal představit algoritmy substr nebo strrev.

Odkin
PHP › Co jste možná nikdy neřešili
5. 1. 2014   #185999

Google mi právě že moc nápomocný není a není to proto, že bych neuměl hledat.

"String není číslo" a "retezce jsou jen hromady bajtu v pameti za sebou", to samozřejmě vím. Ale slova jako řetězec používají jen lidi, když o tom mluví. Stroj ty bajty bere jako číslo (ve dvojkové soustavě), které přepočítává na znaky teprve když je má vykreslit. Snažím se získat přístup k tomuhle číslu, jestli to tak mám podat.

Z téhle informace bych už ty algoritmy vytáhnout dokázal.

Odkin
PHP › Co jste možná nikdy neřešili
4. 1. 2014   #185929

Zdravím, snad se mi tu aspoň někdo ozve...

Zrovna začínám s PHP a zarazila mě existence funkcí jako substr nebo strrev. Rozumím jejich využití při práci se stringem, ale nějak jsem se nikde nedočetl na jakém principu vlastně fungují (algoritmus těch funkcí).

Při tom jsem si i uvědomil, že se v žádném návodu nepíše, jak přímo převádět string na integer. A teď nemluvím o řetezci. – I když se STRING vypisuje jako sada znaků, tak se vlastně jedná o číslo (INTEGER) převedené na znaky. Jak mám toto číslo (s kterým počítač pracuje) vytáhnout?

Pokud dokážete odpovědět i jen na jednu otázku, tak mi vážně pomůžete. :) A jestli nevíte, tak jsem narazil na díru v samotné podstatě vašich znalostí. :P

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032022 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý