Java и неподписанные байты [дубликаты]
На этот вопрос уже есть ответ:
Каков наилучший способ обойти тот факт, что ВСЕ байты Java подписаны? 7 ответовМне нужно использовать массив байтов без знака. Мне нужно отправить определенные символы по сети на сервер, и некоторые из этих символов больше, чем 127.
У меня есть упрощенная версия кода ниже, чтобы попытаться понять концепцию:
int i= 160;
byte j = (byte) i;
System.out.println((byte)i);
System.out.println(j);
и это дает вывод:-96
-96
Мне нужно напечатать 160. Поскольку сервер ожидает байт 160 и, если он получает -96, он не принимает значение. Причина, по которой я использовал int, заключается в том, что когда я читал, как обойти проблему, я часто сталкивался с предложением просто использовать int, но я не совсем понимаю, так как мне нужно, чтобы мой массив имел тип byte .
Это часть моего кода, куда я отправляю массив:
public boolean send(byte[] data) {
try {
out.write(data); // Write the data to the outStream
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false; // Return false if the TCP Transmit failed
// }
return false;
}
Я был бы очень признателен, если бы кто-нибудь мне помог.