2016-12-15 2 views
0

J'ai été chargé de créer un serveur pour un client. J'ai tout le code des clients, donc en l'utilisant, je dois créer un serveur.Bitwise dans un scénario client - serveur Erreur de calcul

Le client a un morceau de code particulier dans une fonction appelée readInt(num1); return num1 << 24 | num1 << 16 | num1 << 8 | num1, qui est appelé chaque fois que le client attend un type = int dans les données reçues d'un paquet, et je ne peux tout simplement pas marchander avec.

J'ai essayé ce qui me vient à l'esprit d'abord - juste inverser, non? Si l'int doit être 3, faites 3 >> 24, mais pas de rendement.

Mon esprit ne fonctionne pas bien mathématiquement, et je ne suis pas un bon résolveur de problèmes, donc si je veux, dis 3 sur le serveur pour lire comme 3 sur le client, quelle formule devrais-je utiliser côté serveur pour atteindre cet?

Le client est dans Adobe ActionScript 3 et le serveur dans Python 2.7.12.

+0

Il ne suffit pas d'info est pour vous aider. Montrez comment vous faites le '3' en Python et comment vous lisez en AS3 ... Les paquets sont-ils reçus dans un byteArray AS3? Si oui, pourquoi ne pas simplement utiliser quelque chose comme 'num1 = myBytes.readUnsignedInteger();' Comme un type Integer utilise 4 octets, vous allez le '.position' de départ de ces 4 octets à lire dans la longueur totale de votre paquet. De toute façon, votre exemple de 3 n'utiliserait qu'un seul octet, donc c'est assez pour utiliser 'num1 = myBytes.readByte();'. Vérifiez l'API ** AS3 ByteArray ** dans les documents en ligne ... –

+0

@ VC.One J'utilise simplement int (3) en Python. Je crois qu'ils sont insérés dans un bytearray dans AS3, mais je vais vérifier, cependant, je n'ai accès en lecture au code AS, pourtant écrire l'accès au code Python. Le code Python doit créer un entier qui est ensuite envoyé au client AS. De plus, tout expieremnts que je fais d'inversion, ne le font pas. Suggérez-vous que j'envoie un struct'D int de Python? Je ne sais pas si le client l'acceptera, mais ça vaut le coup. –

Répondre

0

la seule façon que je connaisse, envoie nombre négatif à partir du serveur pour obtenir un même résultat, sinon impossible de le renverser par le serveur (je suppose)