00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "uti.h"
00027
00028
00029
00030 VOID endian_swap16( VOID * word16 )
00031 {
00032 #define P ((BYTE*)word16)
00033 BYTE tmp;
00034 tmp =P[0];
00035 P[0]=P[1];
00036 P[1]=tmp;
00037 #undef P
00038 }
00039
00040
00041
00042 VOID endian_swap32( VOID * word32 )
00043 {
00044 #define P ((BYTE*)word32)
00045 BYTE tmp;
00046 tmp =P[0];
00047 P[0]=P[3];
00048 P[3]=tmp;
00049 tmp =P[1];
00050 P[1]=P[2];
00051 P[2]=tmp;
00052 #undef P
00053 }
00054
00055
00056
00057 VOID endian_swap64( VOID * word64 )
00058 {
00059 #define P ((BYTE*)word64)
00060 BYTE tmp;
00061 tmp =P[0];
00062 P[0]=P[7];
00063 P[7]=tmp;
00064 tmp =P[1];
00065 P[1]=P[6];
00066 P[6]=tmp;
00067 tmp =P[2];
00068 P[2]=P[5];
00069 P[5]=tmp;
00070 tmp =P[3];
00071 P[3]=P[4];
00072 P[4]=tmp;
00073 #undef P
00074 }
00075
00076
00077
00078 VOID endian_swap16_n( VOID * word16, int n )
00079 {
00080 BYTE tmp;
00081 BYTE *p=(BYTE*)word16;
00082
00083 while (n) {
00084 n--;
00085 tmp =p[0];
00086 p[0]=p[1];
00087 p[1]=tmp;
00088 p+=2;
00089 }
00090 }
00091
00092
00093
00094 VOID endian_swap32_n( VOID * word32, int n )
00095 {
00096 BYTE tmp;
00097 BYTE *p=(BYTE*)word32;
00098
00099 while (n) {
00100 n--;
00101 tmp =p[0];
00102 p[0]=p[3];
00103 p[3]=tmp;
00104 tmp =p[1];
00105 p[1]=p[2];
00106 p[2]=tmp;
00107 p+=4;
00108 }
00109 }
00110
00111
00112
00113 VOID endian_swap64_n( VOID * word64, int n )
00114 {
00115 BYTE tmp;
00116 BYTE *p=(BYTE*)word64;
00117
00118 while (n) {
00119 n--;
00120 tmp =p[0];
00121 p[0]=p[7];
00122 p[7]=tmp;
00123 tmp =p[1];
00124 p[1]=p[6];
00125 p[6]=tmp;
00126 tmp =p[2];
00127 p[2]=p[5];
00128 p[5]=tmp;
00129 tmp =p[3];
00130 p[3]=p[4];
00131 p[4]=tmp;
00132 p+=8;
00133 }
00134 }
00135
00136
00137
00138