符号なしバイトの配列を利用する必要があります。ネットワークを介して特定の文字をサーバーに送信する必要がありますが、これらの文字の一部は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;
}
誰かが私を助けてくれたら本当にありがたいです。