我需要将一组字节写入TCP套接字:
byte[] b = {0x40,0x88,0xFF};
socket.getOutputStream().write( b ) ;
但是在Java中,这里没有未签名的字节,所以byte []初始化失败。如何用Java将3个字节写入套接字?
答案 0 :(得分:1)
签名只是一个概念。在引擎盖下,byte
(有符号或无符号)仅为8位。用0xFF
,您可能是指1111 1111位。用二进制补码解释时的1111 1111是什么? -1!
因此,您应将0xFF
替换为-1
。
类似地,0x88
是1000 1000,即二进制补码为-120。
所以您可以这样写字节数组:
byte[] b = {0x40,-120,-1};
实际上,转换为byte
会为您完成此转换:
byte[] b = {0x40,(byte)0x88,(byte)0xFF};