大端字节序与小端字节序的转换

逐步加深对字节操作的理解,记录一下大端字节序与小端字节序的转换,开发环境是vs2010,项目类型是控制台输出程序,下面是代码实现:

// ByteOrder_demo.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
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;
}

运行结果:
大端字节序与小端字节序的转换_第1张图片
由运行结果看出,原来的小端字节序转换为大端字节序。

你可能感兴趣的:(C++)