Les pages de manuel pour htonl()
semblent suggérer que vous ne pouvez l'utiliser jusqu'à 32 bits. (En réalité, ntohl()
est défini unsigned long, qui, sur ma plate-forme est de 32 bits. Je suppose que si le type unsigned long de 8 octets, il travail pour la version 64 bits ints).
Mon problème est que j'ai besoin de convertir les entiers 64 bits (dans mon cas, c'est un unsigned long long) à partir de gros-boutiste de little-endian. Maintenant, j'ai besoin de faire de conversion spécifique. Mais il serait encore mieux si la fonction (comme ntohl()
) ne serait PAS convertir mes 64 bits de la valeur si la plate-forme cible ÉTAIT en big endian. (Je préfère éviter d'ajouter mon propre préprocesseur de la magie pour le faire).
Que puis-je utiliser? Je voudrais quelque chose qui est la norme, si elle existe, mais je suis ouvert à la mise en œuvre des suggestions. J'ai vu ce type de conversion fait dans le passé à l'aide des syndicats. Je suppose que je pourrais avoir une union avec un unsigned long long et un char[8]. Puis le swap d'octets en conséquence. (Bien sûr se briser sur les plates-formes qui ont été en big endian).