大小端转换

 // C++

 

 1 //32位的转换
 2 
 3  Int32 swapInt32(Int32 value)
 4 
 5 {
 6 
 7      return ((value & 0x000000FF) << 24) |
 8 
 9               ((value & 0x0000FF00) << 8) |
10 
11               ((value & 0x00FF0000) >> 8) |
12 
13               ((value & 0xFF000000) >> 24);
14 
15  }
16 
17  
18 
19 // 64位的转换 
20 
21 public static UInt64 Reverse64Bytes(UInt64 value)
22 
23 {
24 
25  return (value & 0x00000000000000FFUL) << 56 | (value & 0x000000000000FF00UL) << 40 |
26 
27         (value & 0x0000000000FF0000UL) << 24 | (value & 0x00000000FF000000UL) << 8 |
28 
29         (value & 0x000000FF00000000UL) >> 8 | (value & 0x0000FF0000000000UL) >> 24 |
30 
31         (value & 0x00FF000000000000UL) >> 40 | (value & 0xFF00000000000000UL) >> 56;
32 
33 }

 

 

 

// float 型字节序转换 配合union使用

 

 1 union intWithFloat
 2 
 3 {
 4 
 5         Int32 m_i32;
 6 
 7         float m_f32;
 8 
 9 }
10 
11  
12 
13 float swapFloat32(float value)
14 
15 {
16 
17         intWithFloat i;
18 
19         i.m_i32 = value;
20 
21         i.m_f32 = swapInt32(i.m_i32);
22 
23         return i.m_f32;
24 
25 } 

 

posted @ 2015-12-22 16:38  sev  阅读(664)  评论(0编辑  收藏  举报