1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
/* value.c:
*
* routines for converting byte values to long values. these are pretty
* portable although they are not necessarily the fastest things in the
* world.
*
* jim frost 10.02.89
*
* Copyright 1989 Jim Frost.
* See included file "copyright.h" for complete copyright information.
*/
#include "copyright.h"
#include "image.h"
unsigned long
doMemToVal(const byte *p, unsigned int len)
{ unsigned int a;
unsigned long i;
i= 0;
for (a= 0; a < len; a++)
i= (i << 8) + *(p++);
return(i);
}
unsigned long
doMemToValLSB(const byte *p, unsigned int len)
{
unsigned long i;
unsigned int a;
i = 0;
a = len;
while (a--)
i = (i << 8) | p[a];
return (i);
}
/* this flips all the bits in a byte array at byte intervals
*/
void flipBits(p, len)
byte *p;
unsigned int len;
{ static int init= 0;
static byte flipped[256];
if (!init) {
int a, b;
byte norm;
for (a= 0; a < 256; a++) {
flipped[a]= 0;
norm= a;
for (b= 0; b < 8; b++) {
flipped[a]= (flipped[a] << 1) | (norm & 1);
norm >>= 1;
}
}
}
while (len--)
p[len]= flipped[p[len]];
}
|