La conversion de tableau d'octets valeurs en little endian pour court-valeurs
J'ai un tableau d'octets, où les données dans le tableau est vraiment short de données. Les octets sont commandés en little endian:
3, 1, -48, 0, -15, 0, 36, 1
Qui, lorsqu'ils sont convertis en valeurs courtes résultats dans:
259, 208, 241, 292
Est-il un moyen simple en Java pour convertir les valeurs d'octets à leurs valeurs courtes? Je peux écrire une boucle qui ne prend que chaque octet de poids fort et déplacement de 8 bits et OU avec son octet de poids faible, mais qui a un gain de performance.
- Vous avez donné à 8 octets, puis 4 longs... alors que 8 octets ne devrait résulter en une seule valeur de type long. En outre, vous n'avez pas dit ce que vous attendiez. Fondamentalement, votre question est très flou pour le moment...
- Non, il n'est pas clair. Vous avez les données du tableau d'octets et qu'il convertit. Ne peut pas être plus évidente que cela.
- Oui, il peut. Car il semble que vous êtes réellement la conversion à
short
, paslong
... et vous n'avez pas dit ce que vous attendez les résultats. Se sentir libre de ne pas faire de la question plus clair - mais n'oubliez pas que vous êtes à la recherche de l'aide, et le mieux à votre question, le mieux que l'aide est susceptible d'être. - s'il vous plaît, lire de Jon à nouveau des messages, soigneusement. Il sait vraiment ce qu'il dit.
- Nous allons voir exactement ce qui n'est pas clair: 1) Pourquoi vous êtes enceinte 4
long
valeurs de 8byte
valeurs, lorsqu'unlong
a 8 octets de données; 2) quel est le code que vous utilisez pour obtenir les valeurs incorrectes; 3) comment comptez-vous les nombres négatifs à traiter; 4) pourquoi vous êtes impoli de quelqu'un qui essaie de vous aider.
Vous devez vous connecter pour publier un commentaire.
Avec java.nio.ByteBuffer vous pouvez spécifier l'endianness vous voulez: commande().
ByteBuffer ont des méthodes pour extraire des données byte, char, getShort(), getInt(), long, double...
Voici un exemple de comment l'utiliser:
getLong()
pour convertir deux octets selon les données de l'échantillon en question. Vous voulez appelergetShort()
pour cela.)