xicrc.c

来自「< C语言数值算法程序大全>>配套程序」· C语言 代码 · 共 39 行

C
39
字号
/* Driver for routine icrc */

#include <stdio.h>
#include "nr.h"

#define LOBYTE(x) ((unsigned char)((x) & 0xFF))
#define HIBYTE(x) ((unsigned char)((x) >> 8))

main()
{
	unsigned char lin[256];
	unsigned short i1,i2;
	unsigned long n;

	for (;;) {
		printf("Enter length and string: \n");
		if (scanf("%lu %s",&n,&lin[1]) == EOF) break;
		lin[n+1]=0;
		printf("%s\n",&lin[1]);
		i1=icrc(0,lin,n,(short)0,1);
		lin[n+1]=HIBYTE(i1);
		lin[n+2]=LOBYTE(i1);
		i2=icrc(i1,lin,n+2,(short)0,1);
		printf("    XMODEM: String CRC, Packet CRC=    0x%x   0x%x\n",i1,i2);
		i1=icrc(i2,lin,n,(short)0xff,-1);
		lin[n+1] = ~LOBYTE(i1);
		lin[n+2] = ~HIBYTE(i1);
		i2=icrc(i1,lin,n+2,(short)0xff,-1);
		printf("      X.25: String CRC, Packet CRC=    0x%x   0x%x\n",i1,i2);
		i1=icrc(i2,lin,n,(short)0,-1);
		lin[n+1]=LOBYTE(i1);
		lin[n+2]=HIBYTE(i1);
		i2=icrc(i1,lin,n+2,(short)0,-1);
		printf(" CRC-CCITT: String CRC, Packet CRC=    0x%x   0x%x\n",i1,i2);
	}
	printf("Normal completion\n");
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?