我是靠谱客的博主 知性鸵鸟,这篇文章主要介绍Endian的判断和转换,现在分享给大家,希望可以做个参考。

1.判断当前CPU使用哪种C++ Endian?

2.如果当前数据的Endian和当前CPU相反,如何装换?

代码相当直观:

1.判断CPU的C++ Endian:

 
  1. union {  
  2. short s;  
  3. char c[sizeof(short)];  
  4. } un;  
  5. un.s = 0x0102;  
  6. _isLittleEnd = (un.c[0] == 0x2); 

最后的_isLittleEnd是一个bool变量用来保存判定的结果:

2.如何把一个相反C++ Endian的数据转换过来:

 
  1. void Helper::swap(char ch[], int count) {  
  2. int size = count / 2;  
  3. int max = count - 1;  
  4. for (int i = 0; i < size; i++) {  
  5. char t = ch[i];  
  6. ch[i] = ch[max - i];  
  7. ch[max - i] = t;  

其实是将char[]数组就地反转.

3.如何把short/int/double等数据反转过来呢:

以int 为例的代码如下:

 
  1. int Helper::swap(int data) {  
  2. union {  
  3. int _i;  
  4. char _c[sizeof(int)];  
  5. } un;  
  6. un._i = data;  
  7. swap(un._c, sizeof(int));  
  8. return un._i;  

最后

以上就是知性鸵鸟最近收集整理的关于Endian的判断和转换的全部内容,更多相关Endian内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部