Преобразование int в байт в Android - PullRequest
2 голосов
/ 01 апреля 2011

На самом деле мне нужно передать значение integer вместе с bitmap через bluetooth .. Теперь моя проблема заключается в том, что мне нужно передать значение integer как single byte.Возможно ли сделать преобразование int в одиночное byte значение ... и получить его как integer там ... Я пытался byteValue() и кастинг вещь, но она бесполезна .. Если мой подход правильный, просто помогите мне с этим или скажите что-нибудь другое.

(Каждый раз, когда я использую кастинг, он возвращается как 65535)

Ответы [ 4 ]

11 голосов
/ 01 апреля 2011

Как насчет этого?

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;
}

и

public static int byteArrayToInt(byte[] b)
{
    return (b[3] & 0xFF) + ((b[2] & 0xFF) << 8) + ((b[1] & 0xFF) << 16) + ((b[0] & 0xFF) << 24);
}
10 голосов
/ 01 апреля 2011

Если вы абсолютно уверены, что ваша переменная int содержит байтовое значение [-128;127] тогда это должно быть так просто:

int i = 100; // your int variable
byte b = (byte) i;
2 голосов
/ 01 апреля 2011

Один байт (8 бит) может содержать только 2 ^ 8 целых чисел без знака, т.е. [0, 255]. Для подписанного вы теряете первый бит, и диапазон становится [-128, 127]. Если ваше целое число соответствует, тогда должно работать простое приведение.

1 голос
/ 03 июня 2013

для номеров 0-255.

int i = 200; // your int variable
byte b = (byte)(i & 0xFF);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...