Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void
- readHexDigitsInBinaryFormat(FILE *fp)
- {
- int i, done, num_0s, num_1s, bitsRead;
- BYTE buffer[4];
- if ( (epsilon = (BitSequence *) calloc(tp.n,sizeof(BitSequence))) == NULL ) {
- printf("BITSTREAM DEFINITION: Insufficient memory available.\n");
- return;
- }
- printf(" Statistical Testing In Progress.........\n\n");
- for ( i=0; i<tp.numOfBitStreams; i++ ) {
- num_0s = 0;
- num_1s = 0;
- bitsRead = 0;
- done = 0;
- do {
- if ( fread(buffer, sizeof(unsigned char), 4, fp) != 4 ) {
- printf("READ ERROR: Insufficient data in file.\n");
- free(epsilon);
- return;
- }
- done = convertToBits(buffer, 32, tp.n, &num_0s, &num_1s, &bitsRead);
- } while ( !done );
- fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
- nist_test_suite();
- }
- free(epsilon);
- }
- int
- convertToBits(BYTE *x, int xBitLength, int bitsNeeded, int *num_0s, int *num_1s, int *bitsRead)
- {
- int i, j, count, bit;
- BYTE mask;
- int zeros, ones;
- count = 0;
- zeros = ones = 0;
- for ( i=0; i<(xBitLength+7)/8; i++ ) {
- mask = 0x80;
- for ( j=0; j<8; j++ ) {
- if ( *(x+i) & mask ) {
- bit = 1;
- (*num_1s)++;
- ones++;
- }
- else {
- bit = 0;
- (*num_0s)++;
- zeros++;
- }
- mask >>= 1;
- epsilon[*bitsRead] = bit;
- (*bitsRead)++;
- if ( *bitsRead == bitsNeeded )
- return 1;
- if ( ++count == xBitLength )
- return 0;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment