2015-11-02 4 views
0

Этот код, казалось бы, составленный перед:не удается преобразовать из байт [] в байт

private static int addTagLengthValue(int i, int length, byte[] temp, byte[] buffer, int index) { 
    buffer[index++] = i; 
    buffer[index++] = (byte) length; 
    if (length > 0) 
     buffer[index++] = temp; 
    return (index); 
} 

Но теперь я получаю эти ошибки:

Несоответствие типа: не может конвертировать из байт [] в байт Тип рассогласование : невозможно преобразовать из int в байт

Я думаю, что могу использовать i для байта, но как я могу справиться с параметром temp? Я просто поддерживаю код, и эти ошибки возникают. Будет ли это связано с использованием другой версии Java?

+1

Этот 'buffer [index ++] = temp;' не имеет для меня никакого смысла. Вы пытаетесь написать целый 'byte []' в одном индексе 'byte []'? – Tom

+5

Невозможно, чтобы это когда-либо компилировалось в любой версии Java. Если вы поддерживаете код, используйте исходное программное обеспечение для управления версиями, чтобы оглянуться назад и посмотреть, что изначально было отброшено или добавлено. – RealSkeptic

+0

да, вы можете использовать i в байте ** buffer [index ++] = (byte) i; ** но никак не можете преобразовать байт [] в байт –

ответ

1

У вас есть ошибка типа. Переменная temp должна быть byte, а не byte[]. Да, вы можете конвертировать int в byte как тот

int i = 10;

byte b = (byte) i;

Но вы должны быть уверены, что вы не потерять значащие биты.