Guest User

sts utilities.c

a guest
Aug 28th, 2013
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.43 KB | None | 0 0
  1.  
  2. void
  3. readHexDigitsInBinaryFormat(FILE *fp)
  4. {
  5.     int     i, done, num_0s, num_1s, bitsRead;
  6.     BYTE    buffer[4];
  7.    
  8.     if ( (epsilon = (BitSequence *) calloc(tp.n,sizeof(BitSequence))) == NULL ) {
  9.         printf("BITSTREAM DEFINITION:  Insufficient memory available.\n");
  10.         return;
  11.     }
  12.  
  13.     printf("     Statistical Testing In Progress.........\n\n");  
  14.     for ( i=0; i<tp.numOfBitStreams; i++ ) {
  15.         num_0s = 0;
  16.         num_1s = 0;
  17.         bitsRead = 0;
  18.         done = 0;
  19.         do {
  20.             if ( fread(buffer, sizeof(unsigned char), 4, fp) != 4 ) {
  21.                 printf("READ ERROR:  Insufficient data in file.\n");
  22.                 free(epsilon);
  23.                 return;
  24.             }
  25.             done = convertToBits(buffer, 32, tp.n, &num_0s, &num_1s, &bitsRead);
  26.         } while ( !done );
  27.         fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
  28.        
  29.         nist_test_suite();
  30.        
  31.     }
  32.     free(epsilon);
  33. }
  34.  
  35.  
  36. int
  37. convertToBits(BYTE *x, int xBitLength, int bitsNeeded, int *num_0s, int *num_1s, int *bitsRead)
  38. {
  39.     int     i, j, count, bit;
  40.     BYTE    mask;
  41.     int     zeros, ones;
  42.  
  43.     count = 0;
  44.     zeros = ones = 0;
  45.     for ( i=0; i<(xBitLength+7)/8; i++ ) {
  46.         mask = 0x80;
  47.         for ( j=0; j<8; j++ ) {
  48.             if ( *(x+i) & mask ) {
  49.                 bit = 1;
  50.                 (*num_1s)++;
  51.                 ones++;
  52.             }
  53.             else {
  54.                 bit = 0;
  55.                 (*num_0s)++;
  56.                 zeros++;
  57.             }
  58.             mask >>= 1;
  59.             epsilon[*bitsRead] = bit;
  60.             (*bitsRead)++;
  61.             if ( *bitsRead == bitsNeeded )
  62.                 return 1;
  63.             if ( ++count == xBitLength )
  64.                 return 0;
  65.         }
  66.     }
  67.    
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment