Exploiter une variable signée en php
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Exploiter une variable signée en php



  1. #1
    mayonaise

    Exploiter une variable signée en php


    ------

    Bonjour,

    Je suis en train de tenter de récupérer des valeurs depuis une machine distante en php. La machine distante me renvoie des mots codés sur 16 bits qui sont interprétés comme des entiers par php, or ces mots de 16 bits sont signés (complément à 2). Du coup, mes valeurs sont inexploitables... Avez-vous une idée de comment je pourrais procéder pour qu'ils soient reconnus comme signés en complément à 2 ?

    Merci de votre aide.

    Mayonaise

    -----
    Impose ta chance, serre ton bonheur, va vers ton risque.
    A te regarder ils s'habitueront. ♂

  2. #2
    Dormeur74

    Re : Exploiter une variable signée en php

    Une piste maigre :

    Code:
    function bin16dec($bin) {
        // Conversion de nombres binaires 16 bits en entiers en utilisant le complément à deux
        $num = bindec($bin);
        if($num > 0xFFFF) { return false; }
        if($num >= 0x8000) {
            return -(($num ^ 0xFFFF)+1);
        } else {
            return $num;
        }
    }

  3. #3
    mayonaise

    Re : Exploiter une variable signée en php

    Bonjour,

    Merci pour la réponse, j'ai en désespoir de cause appliqué la même formule, mais je pensais que ce genre de conversion était intégré dans php.
    Par contre, je n'ai pas intégré de test si la variable est supérieure à 0xFFFF . Est-ce indispensable ? Je ne dois jamais avoir plus puisqu'elle est transmise sur 16 bits.

    Merci encore et bonne journée,
    Mayonaise
    Impose ta chance, serre ton bonheur, va vers ton risque.
    A te regarder ils s'habitueront. ♂

  4. #4
    Dormeur74

    Re : Exploiter une variable signée en php

    Je ne suis pas certain que PHP5 n'ait pas intégré la lecture des réels signés sur 16 bits. Quoi qu'il en soit, on pourra toujours passer par la création d'une fonction. Ce soir j'aurai un peu plus de temps à passer là-dessus si personne n'a pu te dépatouiller.

    Est-ce indispensable ?
    Oui, toujours très utile dans la gestion des erreurs.
    Dernière modification par Dormeur74 ; 04/11/2011 à 11h47.

  5. A voir en vidéo sur Futura
  6. #5
    Dormeur74

    Re : Exploiter une variable signée en php

    En fait, l'algorithme me semble relativement facile à traiter en PHP. Donc si la fonction n'existe pas en PHP5, tu dois pouvoir te la faire sans trop de mal.

    Tu reçois un mot de 16 bits (une chaîne de 16 caractères faits de "0" ou "1").

    S'il commence par 0, tu calcules directement la valeur décimale de la somme des 15 bits de poids faible.
    S'il commence par 1, tu inverses les bits 0 à 15 (0->1 et 1->0). Tu en calcules la somme S et tu multiplies S-1 par -1.

    Exemples :
    100001100111001 donne -31111
    0111010100101111 donne 29999

    J'espère n'avoir pas dit trop de bêtises (je suis assez coutumier du fait).
    Dernière modification par Dormeur74 ; 04/11/2011 à 18h00.

  7. #6
    Dormeur74

    Re : Exploiter une variable signée en php

    En relisant ta question, je me rends compte que tu parles de nombres signés, comme si le fait qu'ils soient signés en faisait automatiquement des nombres réels.
    Comme tu le sais, 16 bits permettent 65536 combinaisons allant de 0 à 65535 (nombres non signés) ou de -32768 à 32767 (nombres signés). Là on parle d'entiers. Maintenant si tu attends en retour une valeur réelle signée, le problème est complètement différent.

    Tu ajoutes que les valeurs retournées sont inexploitables. Pourquoi ?
    Un exemple de mot sur 16 bits et de résultat attendu serait le bienvenu, car il permettrait de calculer la longueur de l'exposant, donc de la mantisse si tu attends un réel en retour.

Discussions similaires

  1. Notice: Undefined variable: _post in C:\wamp\www\traitement1.php on line 3
    Par invitec4114293 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 16/02/2010, 11h14
  2. Récuperation variable en php
    Par invite528b0bef dans le forum Internet - Réseau - Sécurité générale
    Réponses: 7
    Dernier message: 06/08/2007, 19h28
  3. [C++] Exploiter une chaîne de caractère lue au clavier
    Par Gwyddon dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 24/06/2006, 23h47
  4. Une variable JS dans du php ...
    Par invitee17aeca5 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 5
    Dernier message: 14/11/2005, 20h42
  5. Insérer une page php avec variables (ex : page.php?nom=jean) grâce au javascript
    Par invite991c0955 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 21/05/2005, 17h37