크기 제한이 1 바이트 여야한다는 제한이 Java에서 부호없는 바이트를 구현하는 방법 즉 short 또는 int로 변환 할 수 없습니다. 그리고 ' ing with 0xFF자바에서 부호없는 바이트를 구현하는 방법 크기 제한은 1 바이트 여야합니다
소켓을 통해 부호없는 바이트 배열을 전송해야합니다. 수신 끝은 크기가 1 바이트 인 부호없는 바이트 배열 만 필요로하는 C 코드 메서드입니다.하지만 Java는 부호없는 바이트 개념을 지원하지 않으므로 문제가 발생합니다. . 이를 달성 할 수있는 방법이 있습니까?
바이트 b = (바이트) 0xF0; 또는 심지어 바이트 b1 = 0x00; 소켓 채널을 통해 제대로 보내지 않습니다. 서버에 쓰기위한 방법을 참조하십시오.
공공 무효 인 코드 (IoSession 세션 개체 메시지, ProtocolEncoderOutput 아웃) 그냥 당신이 바이트의 8 개 비트를 해석하는 방법의 예외를 {
//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);
}
나는이 문제가 C 측에서 바이너리를 출력하는 방법이라고 생각한다. 내 대답을 보라. –