Convertir en Tableau d'Octets Entier en Delphi
type B02 = array [01..02] of byte ;
...
var b : B02;
...
//ici j'ai lu de socket tcp
socket.ReadBuffer(b, 2);
La question est: comment faire pour convertir B02 à un nombre entier?
OriginalL'auteur | 2009-09-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez déclarer un Mot/Smallint dans le même emplacement de mémoire, comme ceci:
Puis de nouveau, est-il une raison particulière pour laquelle vous ne vous contentez pas de créer le smallint et de le passer à ReadBuffer au lieu d'un tableau? Je ne sais pas exactement ce que la classe que vous utilisez, mais qui ressemble beaucoup à la manière dont vous lisez à partir d'un TStream, et il va accepter les variables de tout type, avec une taille en octets. Pourquoi ne pas simplement déclarer votre tampon de type integer vous êtes à la recherche pour et couper l'intermédiaire?
La droite. Dans ce cas, vous ne voulez pas utiliser un entier pour cela de toute façon.
Il se pourrait que les données sur le réseau sont stockés dans l'ordre des octets de réseau, pas de l'Intel.
Ainsi, les normes schmandards. Si mon application est à la fois fin, je vais envoyer les données quelle que soit la manière que je veux.
Non, si il y a la moindre chance que ce soit le serveur ou le client va s'exécuter sur une autre plateforme que le PC c'est juste du bon sens pour le protocole de données. Je dirais que c'est un standard, d'utiliser des formats de texte, ou à l'utilisation du réseau d'ordre des octets. Jetez un oeil à la Rfc par exemple.
OriginalL'auteur Mason Wheeler
Si les données sont transmises dans le "réseau" de l'ordre (la plus haute d'octets) et non pas dans "Intel" ordre (du plus faible de l'octet en premier), vous pouvez faire quelques octets shufling vous-même.
Mghie suggéré approche suivante dans les commentaires (et je suis d'accord avec lui):
ntohs()
et en fonte pour uneSmallInt
, alors il serait de travailler sur n'importe quel processeur (lors de l'utilisation de FPC).Vous êtes tout à fait correcte. Mais je suis encore toujours l'écrire Intel uniquement. Cette habbit est difficile à briser 🙁
OriginalL'auteur gabr
Vous pouvez simplement le jeter:
ou si vous avez besoin de changer l'ordre des octets:
OriginalL'auteur Remko