2011-04-01 10 views
2

Im aux prises avec cela pour assez de temps .. En fait, je dois transférer la valeur integer avec le bitmap via bluetooth .. Maintenant, mon problème est que je dois transférer le integer comme uniquebyte valeur .. est tat possible de convertir int comme uniquebyte valeur .. et récupérer comme integer là ... J'ai essayé byteValue() et le casting chose, mais ce ne est pas .. Si uTILE mon approche est bonne Aidez-moi juste avec ça ou dire d'une autre façon ...Сonverting int octet dans Android

(Chaque fois que j'utilise casting alors son retour en 65535)

Merci à l'avance

+0

J'ai aussi essayé de le faire avec la conversion '' int' de char' et d'essayer de convertir en 'byte' (ça marche pour eventhough seulement jusqu'à 255) mais son pas d'utilisation ... – Hussain

+0

essaie d'utiliser sérialisation Si vous ne pouvez pas envoyer de valeur int directement – Vivek

+0

Pourquoi ne pas utiliser directement la valeur des octets et ne pas utiliser de variable entière? – Gogu

Répondre

8

Que pensez-vous de cela?

public static byte[] intToByteArray(int a) 
{ 
    byte[] ret = new byte[4]; 
    ret[3] = (byte) (a & 0xFF); 
    ret[2] = (byte) ((a >> 8) & 0xFF); 
    ret[1] = (byte) ((a >> 16) & 0xFF); 
    ret[0] = (byte) ((a >> 24) & 0xFF); 
    return ret; 
} 

et

public static int byteArrayToInt(byte[] b) 
{ 
    return (b[3] & 0xFF) + ((b[2] & 0xFF) << 8) + ((b[1] & 0xFF) << 16) + ((b[0] & 0xFF) << 24); 
} 
+0

@Dante - il a demandé un * single * octet. – MByD

+0

@MByD, un seul octet ne peut pas transmettre toutes les informations, j'ai donc fourni un tableau à transférer octet par octet. –

+0

@Dante: Je l'ai besoin en un seul octet .. Puis je ne peux pas diifférencier le 'Bitmap' et le' int' – Hussain

10

Si vous êtes complètement sûr, que votre variable int contient une valeur d'octet [-128; 127] alors il devrait être aussi simple que:

int i = 100; // your int variable 
byte b = (byte) i; 
+0

Cela ne fonctionne pas lors de la conversion en 'int' .. Son retour de ** valeur par défaut ** pour chaque' int' – Hussain

+0

@Hussain comment et quand le convertir? –

+0

Je vais le passer comme un 'ByteArray' thro' Bluetooth' et séparer là comme un 'int' et d'autres données .. Avec l'aide de ** longueur ** je vais obtenir le' Bitmap' disponible dans tat .. – Hussain

2

Un seul octet (8 bits) ne peut contenir 2^8 entiers non signés, i.e. [0, 255]. Pour signé, vous perdez le premier bit et la plage devient [-128, 127]. Si votre nombre entier correspond, un simple casting devrait fonctionner.

0

pour les nombres de 0-255.

int i = 200; // your int variable 
byte b = (byte)(i & 0xFF); 
Questions connexes