请高手把一下代码转换成java程序。

调用程序: sum == CalcCRC8( &temp_string[1],(len-1) )
子程序:
/////////////////////按位校验 循环冗余校验
uint8_t CalcCRC8(uint8_t *ptr,uint8_t len) // ptr 为数据指针 len 为数据长度

{

uint8_t i;

uint8_t crc=0;
while(len--)

{

///////////////////////////////////////
i=0x80;

while(i!=0)

{

if(((crc&0x80)!= 0) && ((*ptr)&i)!= 0) //CRC最高位为1且校验bit为1

{

crc <<= 1;

}

else if(((crc&0x80)!= 0) && ((*ptr)&i) == 0) //CRC最高位为1且校验bit为0

{

crc <<= 1;

crc ^= 0x31;

}

else if(((crc&0x80) == 0) && ((*ptr)&i)!= 0) //CRC最高位为0且校验bit为1

{

crc <<= 1;

crc ^= 0x31;

}

else if(((crc&0x80) == 0) && ((*ptr)&i) == 0) //CRC最高位为0且校验bit为0

{

crc <<= 1;

}

i >>= 1;

}
ptr++;

}

return(crc);
}

https://www.cnblogs.com/andysd/p/3937627.html
http://blog.csdn.net/trbbadboy/article/details/16859937

 package demo;

public class s2 {
    public static void main(String[] args) {
        System.out.println(new s2().CalcCRC8(2, 2));;
    }

    int CalcCRC8(int ptr, int len) // ptr 为数据指针 len 为数据长度

    {
        int i;
        int crc = 0;
        for (int a = 0; a < len; len--) {

            {
                // /////////////////////////////////////
                i = 0x80;
                while (i != 0) {

                    if (((crc & 0x80) != 0) && ((ptr) & i) != 0) // CRC最高位为1且校验bit为1
                    {
                        crc <<= 1;
                    } else if (((crc & 0x80) != 0) && ((ptr) & i) == 0) // CRC最高位为1且校验bit为0
                    {
                        crc <<= 1;
                        crc ^= 0x31;
                    } else if (((crc & 0x80) == 0) && ((ptr) & i) != 0) // CRC最高位为0且校验bit为1
                    {
                        crc <<= 1;
                        crc ^= 0x31;
                    } else if (((crc & 0x80) == 0) && ((ptr) & i) == 0) // CRC最高位为0且校验bit为0
                    {
                        crc <<= 1;
                    }
                    i >>= 1;
                }
                ptr++;
            }
        }
        return (crc);
    }


}