règle de passage entier non signé -> entier signé

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : règle de passage entier non signé -> entier signé

par zeus » 20 oct. 2005, 10:25

J'ai pas compris la réponse, mais si elle a l'air de te satisfaire, c'est l'essentiel :?
Est-ce que tu pourrais détailler un petit peu plus au cas où quelqu'un aurait le même problème et voudrais connaitre la solution

Sinon, est ce que ton problème est [RESOLU] ? Si c'est le cas, envoi moi un MP et je tagerais ce sujet vu que, en tant qu'invité, tu ne peut pas le faire ;)

J'ai trouvé

par loolilop » 20 oct. 2005, 10:21

Quand je disais convertion en fait je voulais dire que j'affichais en tant qu'entier signé ou non signé. C'était pas vraiment un convertion (mais je suppose que le résultat est le même).

Mais j'ai trouvé la solution (et me demande pourquoi j'ai galéré avant d'y penser). Il suffit de partir de -1 (en entier signé) = 4 294 967 295 (en entier non signé) et en faisait -(lavaleur signée) je trouve la valeur non signée.
Pourquoi n'y ais je pas penser plus tôt au lieu de faire des calculs de bits ... :?

Merci en tous cas pour votre aide :)

par Cyrano » 20 oct. 2005, 09:46

Utilises-tu decbin() pour faire tes conversions en PHP?

par zeus » 20 oct. 2005, 09:41

Comment est-ce que tu fait tes conversions actuellement ?

exemple

par loolilop » 20 oct. 2005, 09:30

Voici un exemple :

valeur binaire : 10000111101110000100010011110010
valeur entière signée correspondante : -2017966862 (obtenue en php comme en java)
valeur entière non signé souhaitée : 62277000434 (obtenue en php par simple convertion, souhaitée en java)

je cherche donc la convertion entier non signé -> entier signé pour les nombres négatifs.

merci

par Cyrano » 20 oct. 2005, 09:22

La notion d'entier non signé n'existe pas en PHP, c'est ce que j'ai essayé de t'expliquer : PHP n'est pas un langage typé comme le sont d'autres langages comme Java ou C/C++.

par loolilo » 20 oct. 2005, 09:20

Il n'y a pas de passage de valeur. Les 2 codes sont séparés et sont censés donner la même valeur. Le code travaille sur la représentation binaire des nombre (décalége de bit, etc).

J'obtiens la même valeur binaire et numérique dans les 2 codes si je regarde la valeur comme un entier signé en php. Sauf que je veux, dans mon code java, pour cette même valeur binaire, trouver la valeur que j'aurais si je passais en entier non signé en php.
Tu me suis ? C'est difficile à expliquer.

par Cyrano » 20 oct. 2005, 08:55

Je ne crois pas qu'il y ait vraiment ce type de règle en PHP pour la simple raison que le PHP est un langage très faiblement typé : on ne déclare pas les variables en PHP et on ne les type pas non plus à l'exception des tableaux associatifs ou indexés.

Quel est le problème qui se pose lorsque tu transmets ton entier signé ou non vers Java ? (Je suppose que tu perles bien de Java et non de JavaScript ?)

règle de passage entier non signé -> entier signé

par loolilop » 20 oct. 2005, 06:23

Bonjour,

Est ce que vous connetriez la règle de passage d'un entier signé à un entier non signé ?

J'ai un code php qui me donne le bon résultat (un entier non signé) malheureusement je dois le passer en java et le résultat est un long signé.
Pour les valeurs positives tout va bien (long signé java = entier non signé php) mais pour les négatifs je ne sais pas comment faire .....
Y a-t-il une règle de passage ?
Ou sinon, vu que les codes binaires des nombres java et php sont les même, est ce que vous connaitriez la règle d'encodage d'un entier non signé en php ?

Merci