J'écris un programme en C pour Linux sur un processeur ARM9. Le programme consiste à accéder à des paquets de réseau qui comprennent une séquence de données étiquetées comme:Sûr, moyen efficace d'accéder à des données non alignées dans un paquet réseau à partir de C
<fieldID><length><data><fieldID><length><data> ...
Les champs fieldID et de longueur sont à la fois uint16_t. Les données peuvent être de 1 octet ou plus (jusqu'à 64 Ko si la longueur totale a été utilisée, mais ce n'est pas le cas).
Tant que <data>
a un nombre pair d'octets, je ne vois pas de problème. Mais si j'ai une section <data>
de 1 ou 3 ou 5 octets, alors le champID de 16 bits suivant ne se retrouve pas sur une limite de 16 bits et j'anticipe des problèmes d'alignement. Cela fait longtemps que je n'ai rien fait de tel, alors je ne suis pas sûr des détails. Tous les commentaires sont les bienvenus. Merci.
Mettre de côté l'endian-ness est déconseillé dans un réseau. –