2011-01-23 1 views
1

J'essaye de lire dans quelques octets d'un fichier dans Java et puis crée des masques de bit à partir de certaines des données et des longueurs et des offsets des autres. Je suis si proche de faire fonctionner mon programme, mais je continue à obtenir des données brouillées à l'autre bout.C et le code Python à l'aide de Java

Je suis 90% sûr que mon problème est quelque chose à voir avec la façon dont Java est en train de lire les octets.

Il y a un certain Python et le code C que je fonde ma conception sur mais je n » Je sais comment le convertir en Java. J'ai essayé d'envelopper un byte [] dans un byteBuffer mais je reçois toujours des résultats confus.

C'est ce que je suis en train de faire ma tête:

bitmask: = copie InputBuffer [inputIndex] comme nombre entier de 32 bits au format petit-boutiste - doit être quatre octets

Dans C cela se fait comme:

bitmask= (inputBuffer[inputIndex + 3] << 24) | (inputBuffer[inputIndex + 2] << 16) | 
         (inputBuffer[inputIndex + 1] << 8) | inputBuffer[inputIndex]; 

En Python c'est: bitmask= unpack("<L", inputBuffer[inputIndex:inputIndex + 4])[0]

Jusqu'à ce que je peux obtenir ce travail correctement mon programme tombe.

Quelqu'un peut-il fournir des informations sur la meilleure façon de mettre en œuvre cela?

Un grand merci

Tony

+0

S'il vous plaît poster le code Java que vous essayez d'utiliser. –

+0

J'ai mis un peu du code ici http://www.mrthaggar.com/partialCode.txt Excuses pour que ce soit un peu brouillon, j'espère que vous pouvez comprendre ce que j'essaye de faire de lui! ! – Tony

+0

@ user583240: Veuillez ajouter le code Java que vous essayez d'utiliser ** à cette question **. Veuillez ajouter la partie exacte supposée correspondre aux parties Python et C. Veuillez ** mettre à jour ** la question. –

Répondre

1

vous pouvez définir la ordreOctet de ByteBuffer à littleEndian et il suffit d'utiliser getInt