Ошибка знака (+/-) в байтах в операциях установки байтов Java - PullRequest
2 голосов
/ 30 июня 2011

Я декларирую на Java

public byte[] orbits = new byte[38];

Теперь, если я делаю

orbits[24] = (byte)0xFF;

орбиты [24] должны быть заполнены 11111111, т.е. FF (в шестнадцатеричном формате), но вместо этого он заполняется -1.

Эта операция в C ++ работает отлично

char orbits[38]
orbits[24] = (char)0xFF;

Как воспроизвести подобную ситуацию в Java, используя байт? Спасибо

1 Ответ

6 голосов
/ 30 июня 2011

Ну, просто так получается, что -1 равно 0xFF. Все правильно. byte хранит значения от -128 до 127 с использованием дополнения до двух .

В Java нет неподписанных типов. Если вы хотите использовать битовые шаблоны, используйте байт. 0xFF и -1 - это одно и то же в этой ситуации. Если вы хотите использовать числа, то есть 0xFF - это на самом деле 255, а не -1, вам нужно использовать больший тип, например short.

...