逐步加深对字节操作的理解,记录一下大端字节序与小端字节序的转换,开发环境是vs2010,项目类型是控制台输出程序,下面是代码实现:
// ByteOrder_demo.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <iostream>
using namespace std;void JdugeByteOrder(int &a)
{unsigned char *p = (unsigned char *)&a;for(int i = 0; i < sizeof(int);i++){int b = *(p+i);cout<<hex<<b<<"\t";}cout<<endl;
}//字节序转换
void ExchangeByteOrder(int *pData,int nSize)//0x78563412
{unsigned char *p = (unsigned char *)pData;unsigned char temp = 0;for(int i = 0; i < nSize/2 ; i++){temp = p[i];p[i] = p[nSize - 1 - i];p[nSize - 1 - i] = temp;}
}int _tmain(int argc, _TCHAR* argv[])
{int a = 0x12345678;JdugeByteOrder(a);ExchangeByteOrder(&a,sizeof(a));JdugeByteOrder(a);system("pause");return 0;
}
运行结果:
由运行结果看出,原来的小端字节序转换为大端字节序。