en Java, je peux facilement lancer un numéro à un octet, par exemple: Le résultat sera p> maintenant Comment puis-je obtenir la même chose en PHP? P> P>
3 Réponses :
vous ne pouvez pas. PHP n'a aucun octet code> type de données tel que Java fait. P>
Ne me dis pas que tu ne peux pas faire ça dans PHP. Cela pourrait ne pas être simple, mais il est très définitivement faisable.
@Peter: Comment vous pouvez-vous lancer vers un type de données qui n'existe pas?
Il ne se soucie pas du type de données réel utilisé. Il veut que le nombre manipulé comme un octet serait en Java
Il ne vous demande pas de le jeter, le convertit simplement.
Peut-être faire une expression modulo 256 (si non signée) ou MODULO 256 et moins 128.
$val = (($val+128) % 256) - 128
(13020% 256) - 128 ne reviendra pas A -36, je reçois -128 à la place
@shay: Vous devriez au moins obtenir 92 code> qui est
-36 code> modulo
128 code>
J'ai vu cela est devenu la réponse acceptée. Cependant, il y a encore des cas d'angle méchants qui ne sont pas traités des propres. Comme exemple, mettre en place $ val = -512; code> donne le résultat surprenant de
-256 code> au lieu de 0 (depuis -512 décimal == 0xFFFFE00 en 32 bits) C'est Particulièrement drôle depuis -256 ne peut être représenté dans 8 bits. Je vais donc le faire explicite: N'utilisez pas l'opérateur modulo pour faire des opérations bit b>, toujours. Cela demande des ennuis.
$intsize = 64; // at least, here it is... echo ($a<<($intsize-8))/(1<<($intsize-8));