Java で符号なしバイトを実装する方法。サイズは 1 バイトのみに制限されている必要があります。つまり、0xFF で And'ing して short または int に変換することはできません。
受信側はサイズ 1 バイトのみの符号なしバイト配列を期待する C コード メソッドであるため、ソケットを介して符号なしバイト配列を転送する必要がありますが、Java は符号なしバイトの概念をサポートしていないため、問題が発生します。これを達成する手段はありますか?
バイト b=(バイト)0xF0; またはバイト b1=0x00; ソケット チャネルを介して適切に送信されません。サーバーへの書き込み方法をご覧ください。
public void encode(IoSession セッション、オブジェクト メッセージ、ProtocolEncoderOutput out) は例外をスローします {
//lProxylogger.info("Inside ProtocolEncoderAdapter. Encoding response to client..");
String response ;
//lProxylogger.info("The response length in encode adapter is "+ response.length()+" Message="+response);
byte[] responseStream;
response=(String) message;
responseStream= response.getBytes("windows-1252");
//responseStream=serialize(message);
IoBuffer buffer = IoBuffer.allocate(responseStream.length);
// buffer.putInt(response.length);
//IoBuffer buffer=(IoBuffer)message;
// buffer.putObject(message);
System.out.println("Encoded Response:"+new String(responseStream));
for(byte b:responseStream)
System.out.print(b+",");
System.out.println();
buffer.put(responseStream);
// lProxylogger.info("the response buffer size is "+ buffer.capacity());
buffer.setAutoShrink(true);
buffer.shrink();
// lProxylogger.info("After shrinking the buffer size is "+ buffer.capacity());
buffer.flip();
//System.out.println("Writing response to Stream..");
out.write(buffer);
}