Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Lavorare con i BYTE

  1. #1

    Lavorare con i BYTE

    Ciao a tutti!!

    Sto cercando di realizzare un server in php con le funzioni di stream_socket. Stream socket mi fornisce uno stream di dati come se si trattasse di un file.
    Per questo motivo leggo con fread.
    Mi chiedevo. Se io uso fread leggendo (per ipotesi) i primi 1024 BYTE come faccio poi a prendere da questi 1024 per esempio solo un BYTE alla volta?

    Cioè:

    //riverso su $data i primi 1024 byte
    $data=fread($fp,1024);

    Ora vorrei avere il valore numerico del solo primo byte, processandolo quindi come binario. Come faccio ad estrarre solo il primo byte da $data?

    Grazie mille!!!


    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  2. #2
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    905
    prova così:
    Codice PHP:
    function array_str($s) {
      
    $len strlen($s);
      for(
    $i=0$i<=$len$i++) {
        
    $ar[] = substr($s$i1);
      }
      return 
    $ar;

    questa funzioncina restituisce un array con in ogni elemento una "lettera" o cos'è numerico ecc, della stringa scritta come parametro in $s e poi per esempio puoi processare l'array ottenuto con un costrutto foreach o altro per cosa ti serve.


  3. #3
    Si ma una lettera è un char e sono quattro byte. Io dovrei ottenere il valore numerico del primo byte. Per ottenere i primi quattro byte si può anche fare $var{0} ma a me serve proprio il singolo byte. Come se usassi fread($fp,1);

    Grazie cmq per l'aiuto!
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  4. #4
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    905
    ah ma come ti serve a te è così!!
    Codice PHP:
    function filebytes($f) {
      
    $fp fopen($f"r");
      for(
    $i=0$i<=1024$i++) {
        
    $ar[] = fread($fp$i);
      }
      
    fclose($fp);
      return 
    $ar;

    che restituisce sempre un array, ma con in ogni elemento un byte (se ti sei espresso bene)
    dimmi adesso

  5. #5
    si, il concetto è questo!
    Io ho bisogno di avere un array di BYTE.
    Però vorrei averlo da una variabile dove ho già letto più di un byte con fread.

    in codice

    $somedata = fread($fp,1024);

    Adesso (subito dopo la chiamata a fread) vorrei ricavare da $somedata l'array di byte.

    E' possibile?
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  6. #6
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    905
    ahhhhhhhhhhhh ho capito, io non lo sapevo prima, non ricordavo che fread legge FINO al byte indicato e non IL byte indicato...sorry non me lo stavo ricordando, forse vedi tra le note in php.net a fread se c'è qualcosa.

  7. #7
    qualcosa tipo questo ? :master:
    codice:
    <?php
    $filetoread = 'esempio.txt';
    $bytearray = array();
    if(file_exists($filetoread)) {
    	$fp = fopen($filetoread, 'rb');
    	while(!feof($fp))
    		array_push($bytearray, sprintf('%b', ord(fread($fp, 1))));
    	fclose($fp);
    	echo '<pre>'.print_r($bytearray, true).'</pre>';
    }
    ?>
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    Chiedo scusa ma ho fatto una confusione incredibile .
    Chissà perchè ero convinto che un char fosse 4 byte (come ho erroneamente scritto anche nei post sopra ).
    Invece naturalmente un char è 1 byte quindi per accedere ai byte di un fread($fp,1024) non c'è nemmeno bisogno dell'array.

    codice:
    $data=fread($fp,1024);
    $l=strlen($data);
    for($x=0;$x<$l;$x++) echo "BYTE N°$x => ", $data{$x},"\n";
    Tipico esempio di quanto una dormita possa essere utile...
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  9. #9
    Originariamente inviato da IroN@xiD
    Chiedo scusa ma ho fatto una confusione incredibile .
    Chissà perchè ero convinto che un char fosse 4 byte (come ho erroneamente scritto anche nei post sopra ).
    Invece naturalmente un char è 1 byte quindi per accedere ai byte di un fread($fp,1024) non c'è nemmeno bisogno dell'array.

    codice:
    $data=fread($fp,1024);
    $l=strlen($data);
    for($x=0;$x<$l;$x++) echo "BYTE N°$x => ", $data{$x},"\n";
    Tipico esempio di quanto una dormita possa essere utile...
    allora facci anche un pisolino e poi prova questo


    for($x=0;$x<$l;$x++) echo "BYTE N°".($x + 1)." => ", $data{$x},"\n";
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #10
    ma quanto siamo pignoli
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.