00001
00013
00014 #include <string.h>
00015 #include "utils/endian_utils.h"
00016
00017
00018 #pragma mark -
00019
00027 double swapd(double d)
00028 {
00029 uint64_t tmp = 0;
00030
00031 memcpy(&tmp, &d, sizeof(d));
00032 tmp = (tmp >> 32) | (tmp << 32);
00033 tmp = ((tmp & 0xff00ff00ff00ff00ULL) >> 8) | ((tmp & 0x00ff00ff00ff00ffULL) << 8);
00034 tmp = ((tmp & 0xffff0000ffff0000ULL) >> 16) | ((tmp & 0x0000ffff0000ffffULL) << 16);
00035 memcpy(&d, &tmp, sizeof(d));
00036
00037 return d;
00038 }
00039