mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 08:38:27 -05:00
64 lines
1.1 KiB
C
64 lines
1.1 KiB
C
|
/* Toggle the 16 bit unsigned integer pointed by *p from little endian to
|
||
|
* big endian */
|
||
|
void memrev16(void *p) {
|
||
|
unsigned char *x = p, t;
|
||
|
|
||
|
t = x[0];
|
||
|
x[0] = x[1];
|
||
|
x[1] = t;
|
||
|
}
|
||
|
|
||
|
/* Toggle the 32 bit unsigned integer pointed by *p from little endian to
|
||
|
* big endian */
|
||
|
void memrev32(void *p) {
|
||
|
unsigned char *x = p, t;
|
||
|
|
||
|
t = x[0];
|
||
|
x[0] = x[3];
|
||
|
x[3] = t;
|
||
|
t = x[1];
|
||
|
x[1] = x[2];
|
||
|
x[2] = t;
|
||
|
}
|
||
|
|
||
|
/* Toggle the 64 bit unsigned integer pointed by *p from little endian to
|
||
|
* big endian */
|
||
|
void memrev64(void *p) {
|
||
|
unsigned char *x = p, t;
|
||
|
|
||
|
t = x[0];
|
||
|
x[0] = x[7];
|
||
|
x[7] = t;
|
||
|
t = x[1];
|
||
|
x[1] = x[6];
|
||
|
x[6] = t;
|
||
|
t = x[2];
|
||
|
x[2] = x[5];
|
||
|
x[5] = t;
|
||
|
t = x[3];
|
||
|
x[3] = x[4];
|
||
|
x[4] = t;
|
||
|
}
|
||
|
|
||
|
#ifdef TESTMAIN
|
||
|
#include <stdio.h>
|
||
|
|
||
|
int main(void) {
|
||
|
char buf[32];
|
||
|
|
||
|
sprintf(buf,"ciaoroma");
|
||
|
memrev16(buf);
|
||
|
printf("%s\n", buf);
|
||
|
|
||
|
sprintf(buf,"ciaoroma");
|
||
|
memrev32(buf);
|
||
|
printf("%s\n", buf);
|
||
|
|
||
|
sprintf(buf,"ciaoroma");
|
||
|
memrev64(buf);
|
||
|
printf("%s\n", buf);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
#endif
|