Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中没有无符号字节_Java_Byte - Fatal编程技术网

在Java中没有无符号字节

在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,或者二的补码

我需要将一组字节写入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,或者二的补码是-120

因此,您可以这样编写字节数组:

byte[] b = {0x40,-120,-1};
实际上,强制转换为
字节
会为您进行以下转换:

byte[] b = {0x40,(byte)0x88,(byte)0xFF};