J'ai une int [2] représentation d'un int long dans une machine 32 bits et que vous voulez convertir en long sur machine 64 bits. Y a-t-il une manière sûre d'architecture sûre de faire cette conversion?convertir int [2] en long
La machine source est 32 bits et un int est 32 bits. La machine de destination est 64bit et le type long long est définitivement 64bits.
Puis-je effectuer les opérations suivantes?
long i;
int j[2];
#ifdef LITTLEENDIAN
j[1] = *(int*)(&i);
j[0] = *(((int*)(&i))+1)
#else
j[0] = *(int*)(&i);
j[1] = *(((int*)(&i))+1)
#endif
Si ce qui précède est incorrect, alors quelle est la meilleure et la plus sûre pour cela? Je suis sûr que cela aurait été demandé précédemment, mais je n'ai pas trouvé de réponse claire.
Merci
Cela dépend ce que vous entendez par "une représentation' int [2] '' d'une longue int'". Comment avez-vous créé cette représentation? –
Endianness n'est pas le seul problème: sizeof (int) peut juste égaler sizeof (long) pour un compilateur particulier sur une machine particulière. Dans ce cas, votre code ne devrait rien faire. –
Par exemple sur Windows 64 bits, 'long' est 32 bits. –