Java: ошибка «Несовместимые типы данных» - PullRequest
1 голос
/ 11 января 2010
private byte[] decode_text(byte[] image)
{
    int length = 0;
    int offset = 32;
    for(int i=0; i<32; ++i)
    {
        length = (length << 1) | (image[i] & 1);
    }
    byte[] result = new byte[length];
    for(int b=0; b<result.length; ++b )
    {
        for(int i=0; i<8; ++i, ++offset)
            {
            /* I'm getting error at the following line */
            result = (byte)((result << 1) | (image[offset] & 1));
            }
        }
    return result;
}

Ошибка несовместимых типов данных ... требуется байт [] и найден байт ..........

Ответы [ 5 ]

1 голос
/ 11 января 2010

Вы, вероятно, хотите:

result[b] = (byte)((result[b] << 1) | (image[offset] & 1));
1 голос
/ 11 января 2010

Также нельзя присвоить один byte массиву byte.

1 голос
/ 11 января 2010

Вы не можете сдвинуть бит * переменную result, потому что это байтовый массив.

0 голосов
/ 11 января 2010

Вы, вероятно, хотите сделать что-то вроде

    byte[] result = new byte[length];
    for(int b=0; b<result.length; ++b )
    {
        byte value = 0;
        for(int i=0; i<8; ++i, ++offset)
        {
            /* I'm getting error at the following line */
            value = (byte) ((value << 1) | (image[offset] & 1));
        }
        result[b] = value;
    }
0 голосов
/ 11 января 2010

Вы разыгрываете результат всех этих операций

((result << 1) | (image[offset] & 1));

до (byte) и присвоение его byte[].

Вы можете объявить новую байтовую переменную, выполнить какие-либо манипуляции с этой переменной и затем сделать

result[i] = myNewByteVariable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...