J'essaye de lire un long (signé, 4 octets) d'un fichier binaire en C++. Mes principales préoccupations sont les suivantes: la portabilité (les longueurs sont de tailles différentes sur des plates-formes différentes), lorsque vous lisez des fichiers binaires w/std :: ifstream, elle inverse l'ordre des octets (à l'endianness de ma machine). Je comprends pour les types de données comme unsigned int, vous pouvez simplement utiliser les opérateurs bit et shift et AND chaque octet pour inverser l'ordre des octets après avoir été lu à partir d'un fichier.Inverser la lecture longue du fichier?
Je ne suis pas sûr de ce que je ferais pour cela: Actuellement mon code donnera une valeur non-sens:
long value;
in.seekg(0x3c);
in.read(reinterpret_cast<char*>(&value), sizeof(long));
Je ne sais pas comment je peux obtenir la portabilité (je l'ai lu quelque chose unions et char *) et aussi inverser le long signé qu'il lit.
Merci.
Vous ne le renverser si elle ne correspond pas au boutisme sur votre système. Vous devez utiliser des types de données avec des tailles spécifiques définies dans ''. Lisez dans une chaîne, puis construisez la valeur en utilisant les changements de bits et le masquage. Votre code sera alors indépendant de l'endianness sur votre système. –
paddy