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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/* 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(p, len)
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 doValToMem(val, p, len)
unsigned long val;
byte *p;
unsigned int len;
{ int a;
for (a= len - 1; a >= 0; a--) {
*(p + a)= val & 0xff;
val >>= 8;
}
return(val);
}
unsigned long doMemToValLSB(p, len)
byte *p;
unsigned int len;
{ int val, a;
val= 0;
for (a= len - 1; a >= 0; a--)
val= (val << 8) + *(p + a);
return(val);
}
/* this is provided for orthagonality
*/
unsigned long doValToMemLSB(val, p, len)
byte *p;
unsigned long val;
unsigned int len;
{
while (len--) {
*(p++)= val & 0xff;
val >>= 8;
}
return(val);
}
/* 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]];
}
|