在Java中没有无符号字节
我需要将一组字节写入TCP套接字:在Java中没有无符号字节,java,byte,Java,Byte,我需要将一组字节写入TCP套接字: byte[] b = {0x40,0x88,0xFF}; socket.getOutputStream().write( b ) ; 但Java中没有无符号字节,字节[]的非序列化失败。如何用Java将我的3个“是”写入socket?签名只是一个概念。在引擎盖下,字节s,无论是否有符号,都只有8位。通过0xFF,您可能是指位1111 1111。用二的补语解释1111111是什么-1! 因此,您应该将0xFF替换为-1 类似地,0x88是1000,或者二的补码
byte[] b = {0x40,0x88,0xFF};
socket.getOutputStream().write( b ) ;
但Java中没有无符号字节,字节[]的非序列化失败。如何用Java将我的3个“是”写入socket?签名只是一个概念。在引擎盖下,
字节
s,无论是否有符号,都只有8位。通过0xFF
,您可能是指位1111 1111。用二的补语解释1111111是什么-1!
因此,您应该将0xFF
替换为-1
类似地,0x88
是1000,或者二的补码是-120
因此,您可以这样编写字节数组:
byte[] b = {0x40,-120,-1};
实际上,强制转换为字节
会为您进行以下转换:
byte[] b = {0x40,(byte)0x88,(byte)0xFF};