我正在使用C++在Linux机器上进行网络编程,我想知道如何在Java(客户端)中为魔术数字设置4字节的位模式。另外,我如何在c++中设置相同的位模式,我可以将来自客户端的模式与服务器端的模式进行比较。
预先感谢..
编辑
所以现在我有了这个
byte[] signature = new byte[4];
for(int i=0; i<4; i++){
signature[i] = (byte) 0xA9;
}
如果我在调试器的for循环之后查看了数组的内部,那么我有
{-89, -89, -89, -89}
我在C++中做了类似的事情
uint8_t m_magicNumberBuffer[4];
magicKeyRead = read(m_fd, m_magicNumberBuffer, SIZE_OF_HEADER);
if(m_magicNumberBuffer[0] == 0xA9 && m_magicNumberBuffer[1] == 0xA9 && m_magicNumberBuffer[2] == 0xA9 && m_magicNumberBuffer[3] == 0xA9){
printf("SocketClient::recvMagicKey, Magic key has been found \n");
break;
}
我以某种方式工作,但不确定我已经声明了m_magicNumberBuffer和无符号整数,但是在Java中它们为负89。这样可以行吗?
提前致谢。
最佳答案
Java具有按位运算符,例如按位OR |
,按位AND &
和位移位运算符>>>
,>>
和<<
,与C++非常相似。您可以使用它们来完全根据需要操纵位。
由于您没有更详细地说明您想做什么,因此我无法为您提供更详细的答案。