📄 xicrc.cpp
字号:
#include <string>
#include <iostream>
#include <iomanip>
#include "nr.h"
using namespace std;
// Driver for routine icrc
inline unsigned char lobyte(const unsigned short x)
{return (unsigned char)(x & 0xff);}
inline unsigned char hibyte(const unsigned short x)
{return (unsigned char) ((x >> 8) & 0xff);}
int main(void)
{
string lin;
unsigned short i1,i2;
unsigned long n;
for (;;) {
cout << "Enter string: " << endl;
getline(cin,lin);
n=lin.length();
if (n == 0) break;
cout << lin << endl;
i1=NR::icrc(0,lin,0,1);
lin += hibyte(i1);
lin += lobyte(i1);
i2=NR::icrc(i1,lin,0,1);
cout << " XMODEM: String CRC, Packet CRC= 0x" << hex << i1;
cout << " 0x" << i2 << endl;
lin.erase(n,2);
i1=NR::icrc(i2,lin,0xff,-1);
lin += ~lobyte(i1);
lin += ~hibyte(i1);
i2=NR::icrc(i1,lin,0xff,-1);
cout << " X.25: String CRC, Packet CRC= 0x" << hex << i1;
cout << " 0x" << hex << i2 << endl;
lin.erase(n,2);
i1=NR::icrc(i2,lin,0,-1);
lin += lobyte(i1);
lin += hibyte(i1);
i2=NR::icrc(i1,lin,0,-1);
cout << " CRC-CCITT: String CRC, Packet CRC= 0x" << hex << i1;
cout << " 0x" << hex << i2 << endl;
}
cout << "Normal completion" << endl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -