J'ai un fichier sur le disque que je lis qui a été écrit par le code c/C++. Je sais que j'ai deux entiers non signés de 64 bits à lire, mais Java ne prend pas en charge les entiers non signés, donc la valeur que j'obtiens quand je fais DataInputStream.readLong() est incorrecte. (Ignorez byte-order pour l'instant j'utilise en fait un dérivé de DIS appelé LEDataInputStream que j'ai téléchargé sur le web)C/C++ long long à Java long
Beaucoup de messages ici parlent d'utiliser BigInteger mais le javadoc pour lire un bytearray ne parle que du chargement une réinterprétation bytearray, et les questions semblent centrées sur le fait que certaines personnes vont en dehors des limites positives du type long java, que je serai loin des données que je suis en train de lire.
J'ai un script MATLab/Octave qui lit ces longues valeurs longues sous la forme de deux entiers de 32 bits, puis multiplie et ajoute pour obtenir la réponse qu'il souhaite.
Je suppose que la question est - comment puis-je lire un entier non signé de 64 bits en utilisant BigInteger, ou en utilisant [LE] DataInputStream.XXX?
Merci à l'avance
Cela semble prometteur, mais je dois implémenter la fonctionnalité de lire la longue moi-même type (car il n'y a pas de méthode pour lire un unsigned long) et le mettre en BigInteger. Je l'ai accepté comme réponse officielle car c'est la plus proche de ce que je voulais –