无法理解python的代码。尝试翻译成java

时间:2014-12-07 16:07:21

标签: java python

我尝试将这个python的代码翻译成java,但我无法理解字符串:

crc ^ ord (data[idx]) << 8

return crc & 0xffff 

Actualy,我只能理解&lt;&lt; 8 &amp; 0xFFFF的

全功能:

def calculateCRC (data):
l = len (data)
crc = 0
idx = 0
l = l - 1
while l >= 0 :
    crc = crc ^ ord (data[idx]) << 8
    idx = idx + 1
    i = 8
    while i != 0:
    if crc & 0x8000:
        crc = crc << 1 ^ 0x1021
    else:
        crc = crc << 1
    i = i - 1
l = l - 1

return crc & 0xffff 

我知道SO不是免费的代码翻译服务,但我对python有明确的疑问。 所以。你能救我吗?

2 个答案:

答案 0 :(得分:3)

有关ord功能的详细信息,请参阅this。等同于crc ^ ord (data[idx]) << 8的java将是

crc ^ data.charAt(idx) << 8;

答案 1 :(得分:0)

感谢您的帮助!完整的答案是:

public int getCRC(String data)
{
    int l = data.length();
    int crc = 0;
    int idx = 0;
    l = l - 1;
    while (l >= 0)
    {
        crc = crc ^ data.charAt(idx) << 8;
        idx = idx + 1;
        int i = 8;
        while (i != 0)
        {
            if ((crc & 0x8000) != 0)
            {
                crc = crc << 1 ^ 0x1021;
            }
            else
            {
                crc = crc << 1;
            }
            i = i - 1;
        }
        l = l - 1;
    }
return crc & 0xffff;
}