我尝试将这个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有明确的疑问。 所以。你能救我吗?
答案 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;
}