00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00014 template<class T>
00015 void switch_endianess_byte4(T &a) {
00016 char *p=(char*) &a;
00017 static char q[4];
00018 if(sizeof(T)==4) {
00019 q[0]=p[0];
00020 q[1]=p[1];
00021 q[2]=p[2];
00022 q[3]=p[3];
00023 p[0]=q[3];
00024 p[1]=q[2];
00025 p[2]=q[1];
00026 p[3]=q[0];
00027 } else error("switch_endianess_byte4: sizeof(T)!=4");
00028 }
00029
00030 template<class T>
00031 void switch_endianess_byte8(T &a) {
00032 char *p=(char*) &a;
00033 static char q[8];
00034 if(sizeof(T)==8) {
00035 q[0]=p[0];
00036 q[1]=p[1];
00037 q[2]=p[2];
00038 q[3]=p[3];
00039 q[4]=p[4];
00040 q[5]=p[5];
00041 q[6]=p[6];
00042 q[7]=p[7];
00043 p[0]=q[7];
00044 p[1]=q[6];
00045 p[2]=q[5];
00046 p[3]=q[4];
00047 p[4]=q[3];
00048 p[5]=q[2];
00049 p[6]=q[1];
00050 p[7]=q[0];
00051
00052 } else error("switch_endianess_byte8 sizeof(T)!=8");
00053 }
00054