байт Java vs c ++ байт

Я знаю Java byte диапазон от -128 до 127, но C ++ BYTE это unsigned char (От 0 до 255.)

Я хочу преобразовать функцию C ++ в Java, а в C ++ у меня есть LPBYTE (который является указателем на BYTE массив.) Я пытался использовать byte массив вместо LPBYTE в функции C ++, но моя функция Java все еще не работает правильно.

Моя функция C ++ работает с BMP-файлом, и ее алгоритм настроен на кодирование длины серии. При преобразовании его в Java я использую BufferedImage и получать его содержимое как byte[], Я предполагаю, что функция Java не работает правильно из-за несоответствия типов.

Какой тип я должен использовать в Java?

-1

Решение

В Java вы можете использовать простой byte и преобразовать в int как требуется с b & 0xFF

Проблема в том, что Java не поддерживает указатели и вы не можете передать указатель на байты в Java. Ближайший эквивалент byte[],

Если вы выполняете только кодирование RLE, фактическое значение байтов не имеет значения, поэтому не имеет значения, подписаны они или нет. Если вы декодируете файл BMP, вы можете использовать маску, как указано выше, как требуется.

При чтении / записи в байтовый массив распространенным решением является использование ByteBuffer. Это поддерживает написание более длинных типов, таких как short или же int в порядке с прямым или прямым порядком байтов, и вам не нужно заранее знать точную длину.

6

Другие решения

У Java нет беззнаковых типов (кроме char что составляет 16 бит). Так что у вас нет выбора, выбирайте byte но переписать свой код, чтобы он работал со знаком целых чисел. Если вам нужна помощь с этим опубликовать код.

1

В Java нет неподписанного типа байтов. Вы могли бы использовать short вместо. Это может представлять все значения от 0 до 255 и более.

1
По вопросам рекламы [email protected]