java - 如何在java中实现无符号字节,限制是大小只能是1个字节

标签 java sockets io unsigned mina

如何在java中实现无符号字节,限制是大小只能是1个字节,即我们不能通过与0xFF进行And'转换为short或int

我必须通过套接字传输一个无符号字节数组,因为接收端是一个 C 代码方法,只需要一个大小为 1 字节的无符号字节数组,但由于 Java 不支持无符号字节的概念,因此出现了问题。我们有什么办法来实现这一目标吗?

字节b=(字节)0xF0;甚至字节 b1=0x00;未通过套接字 channel 正确发送。请参阅写入服务器的方法。

公共(public)无效编码(IoSession session ,对象消息,ProtocolEncoderOutput输出) 抛出异常{

    //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);

}

最佳答案

有符号性只是在于如何解释字节的 8 位。通过签名,它既不长也不短,并且传输时也没有什么不同。您只需发送字节即可。如果该字节是无符号的,则可以由任何解释该字节的方法将其视为无符号,但这与将其表示为 8 位或发送它无关。

关于java - 如何在java中实现无符号字节,限制是大小只能是1个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15871936/

相关文章:

java - TCP/IP 客户端 : best way to read multiple inputstreams from server

c++ - IOCP 是否创建自己的线程?

c - 在 C : 中限制控制台输入长度

Linux 文件和进程级 I/O 性能指标

java - 在java中显示图像

java - 合并 n 个列表并对数据进行排序,保持原始顺序/约束

c - 从套接字读取是等待还是得到 EOF?

字符与数字的比较

java - @Async 与 Spring 3.0.6

java - 使用 writer 在 Clojure 中编写 CSV 文件