8
votes

Convertir le numéro en octet en PHP

en Java, je peux facilement lancer un numéro à un octet, par exemple: xxx

Le résultat sera xxx

maintenant Comment puis-je obtenir la même chose en PHP?


0 commentaires

3 Réponses :


0
votes

vous ne pouvez pas. PHP n'a aucun octet type de données tel que Java fait.


4 commentaires

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.



3
votes

Peut-être faire une expression modulo 256 (si non signée) ou MODULO 256 et moins 128.

$val = (($val+128) % 256) - 128


3 commentaires

(13020% 256) - 128 ne reviendra pas A -36, je reçois -128 à la place


@shay: Vous devriez au moins obtenir 92 qui est -36 modulo 128


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; donne le résultat surprenant de -256 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 , toujours. Cela demande des ennuis.



7
votes
$intsize = 64; // at least, here it is...
echo ($a<<($intsize-8))/(1<<($intsize-8));

0 commentaires