Autor | Zpráva | ||
---|---|---|---|
Jakuje Profil |
#1 · Zasláno: 22. 10. 2008, 21:06:03
Obávám se že to tu ještě nebylo. Ale já vždycky přijdu s nějakou kravinou, kterou nikdo jiný nedělá (a nebo na ni jenom nemůžu přijít) :)
Mám čísla v hexadecimálním tvaru a potřebuju je zapsat do souboru. Když je převedu na znaky, tak se to zesere. Nějak mě aktuálně vůbec nenapadá jak to udělat. Má někdo radu? |
||
Mike8748 Profil |
#2 · Zasláno: 22. 10. 2008, 21:08:55
Jakuje
jak to prevadis? a v jakym formatu to chces zapisovat? textove? binarne? |
||
Jakuje Profil |
#3 · Zasláno: 22. 10. 2008, 21:13:07 · Upravil/a: Jakuje
No zatím zapisuju textově normální řetězce, které do toho souboru také budou patřit.
V této části php zase nemám takových zkušeností, takže používám funkci file_put_contents() cílový soubor by měl být .pdb - Palm DataBase, je kódován šestnástkově (hexadecimálně v pspadu zobrazím, doufám že je to šestnástkově) a je tam potřeba speciální hlavička. |
||
Majkl578 Profil |
#4 · Zasláno: 22. 10. 2008, 21:16:41
hexa = šest, hexadecimální = šestnáctkový
kdyby se nezobrazil sestnactkove, neni to hexa kod, ale treba oktalovy |
||
Jakuje Profil |
#5 · Zasláno: 22. 10. 2008, 21:18:13
Majkl578
Tak jasně ... tohle jsem fakt slyšet nepotřeboval. |
||
Jakuje Profil |
#6 · Zasláno: 22. 10. 2008, 21:34:33
Asi by byl nejlepší ten binární zápis, ale nejsem si jistej jak to kombinovat s normálním textovým ...
|
||
BetaCam Profil |
#7 · Zasláno: 22. 10. 2008, 21:37:18 · Upravil/a: BetaCam
Jakuje
„Mám čísla v hexadecimálním tvaru a potřebuju je zapsat do souboru. Když je převedu na znaky, tak se to zesere. “ 1) Definuj slovo "zesere". 2) Jak ty čísla znaky převádíš. 3) Dej sem modelovej příklad "zesranýho" převodu. |
||
Mike8748 Profil |
#8 · Zasláno: 22. 10. 2008, 21:40:00 · Upravil/a: Mike8748
Jakuje
pak tedy php manual, tam si najdes funkci pack() a prectes si o ni neco |
||
Jakuje Profil |
#9 · Zasláno: 22. 10. 2008, 21:51:03
„1) Definuj slovo "zesere".“
Nevypisuje správné hexadecimální hodnoty (což je asi logické) „2) Jak ty čísla znaky převádíš.“ mám hexdec číslo, např. A4 a přeženu přes něj funkci hexdec() a chr(), nj. asi je to kravina, ale bylo to první co mě napadlo. „3) Dej sem modelovej příklad "zesranýho" převodu.“ Modelový příklad: $header = hex2char("3030204D6574612D4442"); //číslo redakčně zkráceno function hex2char($hex){ $char = str_split($hex, 2); $i = 0; $out = ""; while( !empty($char[$i]) ){ $out .= chr(dechex($char[$i])); $i++; } return $out; } Mike8748 podívám se na to. |
||
BetaCam Profil |
#10 · Zasláno: 22. 10. 2008, 21:59:21
Jakuje
Hezké a jak by měl vypadat return kdyby to převádělo správně. :) |
||
Jakuje Profil |
#11 · Zasláno: 22. 10. 2008, 22:02:34
„Jakuje“
„Hezké a jak by měl vypadat return kdyby to převádělo správně. :)“ Netuším ... :-) Mě jde o to ty data natlačit 16tkově do souboru ... asi bude potřeba udělat to binárně, takže to asi převést na binár. Žeby to šlo pomocí té funkce pack()? |
||
BetaCam Profil |
#12 · Zasláno: 22. 10. 2008, 22:33:25
Jakuje
„Netuším ... :-) Mě jde o to ty data natlačit 16tkově do souboru ...“ Z tebe to leze jak z chlupaté deky. Jaké data potřebuješ dostat do souboru. Já z toho tvého vyprávění nechápu co chceš vlastně převádět z čeho do čeho. Říkáš, že máš hexa a potřebuješ to dostat do souboru, ale jinde zase říkáš : „Mě jde o to ty data natlačit 16tkově do souboru ... “ Tak se rozhodni v čem máš zdrojové data a jaké mají být finálně protože takhle to opravdu nechápu. |
||
BetaCam Profil |
#13 · Zasláno: 22. 10. 2008, 22:47:10
Jakuje
Nebo já to řeknu jinak sice vím, že ti s velkou pravděpodobností de o funkce bin2hex(); hex2bin(); Z toho bin2hex je nativně v PHP a hex2bin není a dala by se zapsat asi takto : function hex2bin($s){ $out = ''; $segments = str_split($s, 2); foreach($segments as $segment){ $out .= chr(hexdec($segment)); } return $out; } Ale opravdu jen hádám z koule. |
||
Davex Profil |
#14 · Zasláno: 22. 10. 2008, 22:53:34
function hex2bin($hex) { return pack('H*',$hex); } |
||
BetaCam Profil |
#15 · Zasláno: 22. 10. 2008, 23:02:54
Davex
Ano nebo tvá rychlejší varianta. |
||
nightfish Profil |
#16 · Zasláno: 23. 10. 2008, 08:47:39
kolega zadavatel by si měl v prvé řadě ujasnit, jak vlastně fungují různé módy přístupu k souborům (textový, binární) a také jaké různé číselné soustavy existují, a jakým způsobem se tyto soustavy používají k zaznamenávání znaků (jakože obvykle nepoužívají)
binární data jsou posloupnost znaků s ordinální hodnotou 0-255... jelikož ne všechny tyto znaky lze vypsat na obrazovku/vytisknout, používají se různé způsoby zápisu - např. posloupnost čísel 0-255, popřípadě pro ušetření místa zápis třeba v hexadecimální soustavě (výhodou je, že každý znak ze souboru zabere při výpisu právě 2 znaky) pokud máš na vstupu posloupnost zápisů znaků hexadecimální soustavě, a na výstupu potřebuješ binární data, použij pack pokud máš na vstupu binární data, zapiš na výstup taktéž binární data a jseš v pohodě |
||
Jakuje Profil |
#17 · Zasláno: 23. 10. 2008, 15:53:57
Tak něco jsem si už teda trochu ujasnil ... řekněme že nějaký převod již fungovat bude. Ale teď mám problém se zápisem do souboru:
php6 ještě není a file_put_contents s flag TEXT_BINARY nefunguje asi je potřeba použít fopen s módem řekněme wb. Ale nějak netuším jak tam zapsat ty binární data. Má někdo rady? |
||
Jakuje Profil |
#18 · Zasláno: 23. 10. 2008, 16:00:26
Tak se omlouvám. Už jsem to napsal a normální zápis frwite po zabalení funkcí pack funguje.
Tak děkuji všem za rady. |
||
Časová prodleva: 15 let
|
0