Comment pourrait-on s'y prendre? Aussi, y a-t-il un moyen facile de le faire? En utilisant un lib comme Boost ou quelque chose?lire un int à partir d'un fichier écrit par la méthode writeInt de Java en C++?
Répondre
Le DataOutputStream qui écrit l'int écrit un entier de 4 octets, avec les octets hauts en premier. Lit dans char *, réinterprète et si vous avez besoin de convertir l'ordre des octets, utilisez ntohl.
ifstream is;
is.open ("test.txt", ios::binary);
char* pBuffer = new char[4];
is.read (pBuffer, 4);
is.close();
int* pInt = reinterpret_cast<int*>(pBuffer);
int myInt = ntohl(*pInt); // This is only required if you are on a little endian box
delete [] pBuffer;
Tout va bien jusqu'à ce que vous atteigniez une plate-forme où 'sizeof (int)! = 4'. Ou un où les entiers sont ceux de complément ou de signe-un, et non le complément de deux (tous permis par ISO C99). –
... ainsi que ISO C++ –
Sur quelle plate-forme les entiers sont-ils complémentaires ou sign-bit? J'aimerais savoir. – anio
Idées:
- lu en binaire droite, puis convertir/octets si nécessaire interprètent. Donc, si Java a écrit 4 octets pour l'int, alors vous lisez dans 4 octets. S'il y a une quelconque chose à changer, alors faites-le, puis copiez (ou copiez) le tableau d'octets vers un C++ int
- Si vous pouvez changer le code Java, vous pouvez l'écrire comme quelque chose de commun que C++ peut lire comme Texte UTF-8 ou ascii, ou format de protocole Google Tampons ou autre chose.
La seule façon multi-plateforme pour le faire est de le lire octet par octet (qui est, par char
char
), et de construire un nombre entier d'entre eux. Vous voudriez utiliser long
, car int
n'est pas garanti assez large pour contenir une valeur de 32 bits. Je suppose que vous avez lu les octets dans un tableau char[4]
ici (autres réponses ont déjà démontré comment le faire):
char bytes[4];
...
long n = (long(bytes[0]) << 24) | (long(bytes[1]) << 16) |
(long(bytes[2]) << 8) | long(bytes[3])
- 1. Quelle est la meilleure méthode (la moins impactante?) Pour lire un fichier écrit par un autre processus?
- 2. Lire des images à partir d'un fichier en C++
- 3. Quelle est la méthode la plus rapide pour lire à partir d'un fichier texte en Java?
- 4. Lire le fichier à partir du port série en Java
- 5. Lire RSAPublicKey en Java à partir du fichier XML
- 6. Comment lire un fichier texte chinois à partir de C#?
- 7. Lire un fichier et l'éditer en Java
- 8. Lire un fichier distant en utilisant Java
- 9. Quelle est la meilleure méthode pour lire un double à partir d'un fichier binaire créé en C?
- 10. Problème de lecture d'un entier en Java qui a été écrit en utilisant la méthode struct.pack de python
- 11. Comment lire la chaîne de certificats Pkcs # 7 à partir de fichier/flux en C#?
- 12. Pourquoi ce programme ne lit pas (ou écrit?) Correctement à partir d'un fichier .bin? (C++)
- 13. Comment lire à partir d'un fichier texte en utilisant VBScript?
- 14. Générateur d'installateur écrit en Java?
- 15. Applet Java signé écrit dans un fichier texte
- 16. lire la matrice d'un fichier en C C++
- 17. Comment lire les numéros à partir d'un fichier ASCII (C++)
- 18. Int à Char en C#
- 19. Test de ce qui est écrit sur un Java OutputStream
- 20. écrit à un fichier via FTP en python
- 21. Un client BitTorrent écrit en C#?
- 22. Lire à partir d'un fichier en utilisant fgets() provoque "Violation d'accès de lecture d'adresse ..." C++
- 23. Appelez une méthode à partir d'un fichier inclus PAS à partir du fichier inclu. Php
- 24. Essayer de lire des primitives non Java à partir d'un fichier binaire
- 25. recommande un tutoriel pour lire le fichier Excel en C#
- 26. Pourquoi rien n'est écrit dans un fichier?
- 27. Comment lire une entrée formatée en Java?
- 28. Y at-il un BinaryReader en C++ pour lire les données écrites à partir d'un BinaryWriter en C#?
- 29. Regarder/lire un fichier journal en croissance
- 30. prendre par programmation un instantané à partir d'un fichier MPEG à partir de C#
double possible: http://stackoverflow.com/questions/1154991/load- binary-file-using-fstream –