我收到了以下源代码,它生成输入字符串的专有CRC值。您能否帮助识别语言并建议我可以编译哪些工具/环境并使其工作。感谢
WORD CalcCRC(BYTE *pstr, WORD len)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
WORD crc;
WORD i;
crc = 0; // initialise CRC
for (i = 0; i<len; i++) // calculate CRC for every single byte
{
CRCBYT(*pstr, &crc);
pstr++;
}
return crc;
}
void CRCBYT(unsigned char byt, WORD *pcrc)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
int i;
WORD fl1;
for (i = 0; i<8; i++)
{
fl1 = ((*pcrc) & 0x8000); //MSB = 1?
(*pcrc) <<= 1; //CRC shift left
if (byt & 0x80) //MSB = 1?
(*pcrc)++; //Byte shift left
byt <<= 1;
if (fl1) //if fl1 XOR of CRC
(*pcrc) ^= 0x1021;
}
}
答案 0 :(得分:4)
它来自Windows,但如果你取出AFX_MANAGE_STATE
行(似乎不需要),它应该在任何C或C ++编译器中编译。
如果您没有为Windows编译,则可能需要添加以下typedef:
typedef unsigned short WORD;
typedef unsigned char BYTE;