add numerical recipes library
This commit is contained in:
41
lib/nr/ansi/examples/xicrc.c
Normal file
41
lib/nr/ansi/examples/xicrc.c
Normal file
@@ -0,0 +1,41 @@
|
||||
|
||||
/* Driver for routine icrc */
|
||||
|
||||
#include <stdio.h>
|
||||
#define NRANSI
|
||||
#include "nr.h"
|
||||
|
||||
#define LOBYTE(x) ((unsigned char)((x) & 0xFF))
|
||||
#define HIBYTE(x) ((unsigned char)((x) >> 8))
|
||||
|
||||
int main(void)
|
||||
{
|
||||
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;
|
||||
}
|
||||
#undef NRANSI
|
||||
Reference in New Issue
Block a user