我是靠谱客的博主 知性鸵鸟,最近开发中收集的这篇文章主要介绍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的判断和转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部