代码实现判断主机字节序(大端 or小端 )

原创 2012年03月26日 21:18:33

字节序有两种表示方法:大端法(big ending),小端法(little  ending)。

网络字节序采用的是大端法。

主机字节序不同的CPU采用的方法不一样,可以通过代码来查看自己主机的字节序。

大端法:高位字节排放在内存低地址端,低位字节排放在内存的高地址端。

小端法:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

看一个unsigned short 数据,它占2个字节,给它赋值0x1234。

若采用的大端法,则其低地址端应该存放的是0x12;

若采用的小端法,则其低地址端应该存放的是0x34;

可以通过联合体来获得其高低地址的数据。

测试主机字节序的代码:

#include <stdio.h>

typedef union{
	unsigned short value;
	unsigned char bytes[2];
}Test;

int main(void)
{
    Test test_value;
    test_value.value = 0x1234;

    if(test_value.bytes[0] == 0x12 && test_value.bytes[1] == 0x34)
    	printf("big ending");
    else if(test_value.bytes[0] == 0x34 && test_value.bytes[1] == 0x12)
    	printf("little ending");
    else
    	printf("use test_value error");
    return 0;
}


相关文章推荐

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

判断主机字节序

首先我们需要知道什么是小端字节序和大端字节序。    考虑一个16位整数,它由2个字节组成。内存中存储这两个字节有两种方法:一种是将低序字节存储在低地址中,高字节存储在高地址中,这称为小端字节序(l...

主机字节序(大小端判断)及网络字节序

如有转载,请注明出处。 作者:super_bert@csdn 先上两种判断主机字节序的方法(C描述),再详细解释。 判断原理: 1.Union成员本身是被存放在相同的内存空间中(即共享内存),uni...

判断主机字节序的两种方法

void Endian(int i) { unsigned short a = 0x1122; unsigned char* p = (unsigned char*)&a; if (*p...
  • penzo
  • penzo
  • 2010年11月10日 20:45
  • 1189

如何判断主机是大端还是小端(字节序)

简单的判断大端还是小端 字节序

[笔试题] 如何判断主机是大端还是小端(字节序)

http://blog.csdn.net/forestlight/article/details/6933528 今天看《linux程序设计》中关于跨平台需要注意的事项,看到了大端小端的问题。突然想...

linux网络编程一:主机字节序与网络字节序的的判断

最近在看《linux高性能服务器编程》,在此做个日记,以激励自己,同时分享于有需要的朋友。         现代CPU的累加器一次能装载至少4字节(32位),即一个整数。那么这4字节在内存中排列的...

[笔试题] 如何判断主机是大端还是小端(字节序)

今天看《linux程序设计》中关于跨平台需要注意的事项,看到了大端小端的问题。突然想起实验室一同学的笔试题,如何判断主机的大端还是小端。         所谓大端就是指高位值在内存中放低位地址,所谓...

测试平台大端还是小端(网络字节序和主机字节序)

大端和小端(网络字节序和主机字节序): 大端(Big Endian):即网络字节序。 小端(Littile Endian):即主机字节序。 记忆方式:网络的范围很大,所以大端是网络字节序。 大...

测试机器大小端的方法

首先,给出一些大小端相关概念。大小端的由来: 在乔纳森·斯威夫特的著名讽刺小说《格列夫游记》中,小人国内部分裂成Big-endian和Little-endian两派,区别在于一派要求从鸡蛋的大头把鸡...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:代码实现判断主机字节序(大端 or小端 )
举报原因:
原因补充:

(最多只允许输入30个字)