Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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 根据CCITT多项式(x^16+;x^12+;x^5+;1)计算CRC_Java_C#_Checksum_Crc - Fatal编程技术网

Java 根据CCITT多项式(x^16+;x^12+;x^5+;1)计算CRC

Java 根据CCITT多项式(x^16+;x^12+;x^5+;1)计算CRC,java,c#,checksum,crc,Java,C#,Checksum,Crc,我有一个校验和方法,可以计算用C#编写的CRC到CCIT多项式。现在我必须用java编写相同的方法,但我不知道如何用java编写该方法 private int ComputeChecksum(byte[] buf, int StartIdx, int EndIdx) { int CRC = 0xFFFF; for (int i = StartIdx; i < EndIdx; i++) { int ch = b

我有一个校验和方法,可以计算用C#编写的CRC到CCIT多项式。现在我必须用java编写相同的方法,但我不知道如何用java编写该方法

private int ComputeChecksum(byte[] buf, int StartIdx, int EndIdx)
    {
        int CRC = 0xFFFF;

        for (int i = StartIdx; i < EndIdx; i++)
        {
            int ch = buf[i];          /* Process one byte                  */

            for (int j = 0; j < 8; j++)
            {
                int xo = (CRC ^ ch) & 0x0001;

                CRC >>= 1;
                ch  >>= 1;

                if (xo == 1)
                    CRC ^= 0x8408;      /* Toggle bits / set incoming bit    */
            }
        }

        return CRC ^ 0xFFFF;        // 1's complement
    }
private int-ComputeChecksum(字节[]buf,int-StartIdx,int-EndIdx)
{
int CRC=0xFFFF;
对于(int i=StartIdx;i>=1;
ch>>=1;
如果(xo==1)
CRC^=0x8408;/*切换位/设置输入位*/
}
}
返回CRC^0xFFFF;//1的补码
}

您可以将所有注释更改为“/”,然后从现有的c代码开始,根据需要进行更改。是的,我在Java中尝试了这段代码,但它给出了一个完全错误的校验和。你能帮我弄清楚怎么做吗?试着用
char[]buf
而不是
byte[]buf
。我应该如何用java编写代码,计算校验和?除了将byte改为char,它可能会按原样工作。你可以将所有注释改为“/”,然后从现有的c代码开始,是的,我在Java中尝试了这段代码,但它给出了一个完全错误的校验和。你能帮我弄清楚怎么做吗?试着用
char[]buf
代替
byte[]buf
。我应该如何用java编写代码,计算校验和?除了将字节改为char,它可能会按原样工作。