Sélectionner une révision Git
-
Thomas Goyne a rédigéThomas Goyne a rédigé
swap.c 1,29 Kio
#include "swap.h"
short shortsw(short sh)
{
swap2 s1;
swap2 s2;
s1.ival = sh;
if (bigendian)
{
s2.c[1] = s1.c[1];
s2.c[0] = s1.c[0];
}
else
{
s2.c[0] = s1.c[1];
s2.c[1] = s1.c[0];
}
return s2.ival;
}
short getshortsw(char *c)
{
swap2 s;
if (bigendian)
{
s.c[1] = c[1];
s.c[0] = c[0];
}
else
{
s.c[0] = c[1];
s.c[1] = c[0];
}
return s.ival;
}
long getintsw(char *c)
{
swap4 s;
if (bigendian)
{
s.c[0] = c[0];
s.c[1] = c[1];
s.c[2] = c[2];
s.c[3] = c[3];
}
else
{
s.c[0] = c[3];
s.c[1] = c[2];
s.c[2] = c[1];
s.c[3] = c[0];
}
return s.ival;
}
long intsw(long ii)
{
swap4 s1,s2;
s1.ival = ii;
if (bigendian)
{
s2.c[0] = s1.c[0];
s2.c[1] = s1.c[1];
s2.c[2] = s1.c[2];
s2.c[3] = s1.c[3];
}
else
{
s2.c[0] = s1.c[3];
s2.c[1] = s1.c[2];
s2.c[2] = s1.c[1];
s2.c[3] = s1.c[0];
}
return s2.ival;
}
short reverse(short s)
{
short b = 0;
short i;
b = s & 0x1;
for (i = 0; i < 15; i++)
b = (b<<1) | ((s = s >> 1) & 1);
return b;
}