Я пытаюсь преобразовать int (максимум 65535) в массив из двух байтов. В C я использовал uint16, но Java не знает никаких значений без знака.Int to byte array - byte shifting
Чтобы преобразовать байты в массив я пытался использовать это:
byte[] data = { (byte) ((num >> 8) & 0xff), (byte) (num & 0xff) };
Но я только получаю: [63, -49] вместо: [63, 207], если я использую 16335 в качестве значения , Есть ли способ сделать это на Java?
мне нужен этот байт без знака в виде массива байтов, чтобы отправить его с помощью OutputStream
байты подписаны в java ... (so -49 ~ = 207) – njzk2
Спасибо, что является лучшим способом конвертировать его в unsigned? Должен ли я просто вычислить 256-49 для второго значения? – ForJ9
Это правильные байты. Вопрос заключается в том, используете ли вы их в любом контексте, где знак является проблемой, и если да, то что вы ожидаете от него вместо -49, учитывая, что 207 не является допустимым значением для байта в Java. В Java нет целых чисел без знака, хотя вы можете делать неподписанные операции с использованием целых чисел/shorts/bytes в определенных случаях. – RealSkeptic