誰かこのコードをPythonに翻訳していただけますか?私が試したし、もう一度試してみましたが、それを管理していないていますcrc24をcからpython
#define CRC24_INIT 0xB704CEL
#define CRC24_POLY 0x1864CFBL
typedef long crc24;
crc24 crc_octets(unsigned char *octets, size_t len)
{
crc24 crc = CRC24_INIT;
int i;
while (len--) {
crc ^= (*octets++) << 16;
for (i = 0; i < 8; i++) {
crc <<= 1;
if (crc & 0x1000000)
crc ^= CRC24_POLY;
}
}
return crc & 0xFFFFFFL;
}
私は評判の良いプログラマのソースコードからそれを得たので、私は作品を知っている左回転機能(ROL24(value,bits_to_rotate_by)
)を、持っている、しかし、私はいけませんオクテットで*
と++
を取得します。私は、ソートのC++でどのように++
作品を理解し、私は*
はすべて
私のコードでは何か知らないです:
def crc24(octets, length):# now octects is a binary string
INIT = 0xB704CE
POLY = 0x1864CFB
crc = INIT
index = 0
while length:
crc ^= (int(octets[index], 2) << 16)
index += 1
for i in xrange(8):
crc = ROL(crc, 1)
if crc & 0x1000000:
crc ^= POLY
length -= 1
return crc & 0xFFFFFF
ありません私たちは、についてですあなた – Falmarri
ためのコードを書きませんこれまでに翻訳する最も簡単で素敵なコード。 – Falmarri
Pythonのバージョンで何が問題でしたか? Pythonであなたの試行を投稿してください。多分、誰かがここからあなたのミスを修正することができます。 – pafcu