我正在使用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++非常相似。您可以使用它们来完全根据需要操纵位。

由于您没有更详细地说明您想做什么,因此我无法为您提供更详细的答案。

10-06 13:51