Autor Zpráva
návštěvník
Profil *
V manuálu PHP jsem si přečetl, že PHP nepodporuje typ insigned integer. Chci se zeptat jakým způsobem zapisovat integer do binárního souboru a jak ho zpět načíst. Zjistil jsem že existuje funkce pack:
http://php.net/manual/en/function.pack.php
ale tam vidím že tam unsigned integer existuje. Takže protimluv v manuálu?

Popis konceptu:
Chci do toho souboru zapisovat čísla uživatelů jako vytvořit takovou databázi okruhů mezi uživateli. Takže by to asi mělo být tak, že zapíšu 32 bitový id přihlášeného uživatele, pak zapíšu první 32 bitový id (tj. první uživatel) a bude následovat zřejmě 22 bytů obsahující 88 bitů - položek, které každý uživatel může vyplnit. Tuto databázi bych chtěl používat k porovnávání okruhů mezi uživateli (každý uživatel bude mít masku vytvořenou na základě svého nastavení a podle té masky pak porovnám dvě čísla a pokud je výsledek pravda, pak vytáhnu idečka uživatelů které splňují požadavek.
Alphard
Profil
návštěvník:
Takže protimluv v manuálu?
Ne, jsou tam k tomu napsány dokonce 2 poznámky. Stručně, PHP neumí pracovat s unsigned, všechna čísla reprezentuje jako integer nebo double.

V tom popisu konceptu jsem se trochu ztratil, ale nebylo by jednodušší neřešit binární zápis, ale ukládat si serializované pole, JSON, XML nebo něco takového? Takovou strukturu snadno načtete a na její prvky můžete snadno použít bitové operátory.
Nebo to dát hned do databáze.
návštěvník
Profil *
V jakém formátu to ten json ukládá? To asi není binární? Já chtěl binární zápis protože by mě měl ušetřit místo. JSON je jednodušší ale pomalejší?
Alphard
Profil
Vše z toho, co jsem uvedl, ukládá data textově. Není to odpověď přesně na dotaz, ale občas se tady někdo ptát zbytečně složitě, aniž by věděl, co dělá, proto jsem nabídl alternativu
návštěvník
Profil *
Mě zajímá jak v PHP převést ty 4 byty na integer případně jak integer převést na 4 byty stringu. Je třeba kvůli tomu volat funkci? Nebo mi stačí něco takového?
$i = ($ar[3]<<24) + ($ar[2]<<16) + ($ar[1]<<8) + $ar[0];
http://stackoverflow.com/questions/12683833/how-to-convert-byte-array-to-integer-in-php

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0