判断CPU存储字节大小端的两个程序

            最近看了有关CPU处理字节的大小端存储方式以及网络传输中相关字节端顺序的问题,想起曾经也在编程中遇到过此类问题,只是当时没有引起重视,在编程顺利的情况下也就想当然的过去了,因此有必要作以下总结。但是由于相关内容较多,思维也较混乱,一片文章恐怕很难全部说清楚。于是决定分篇讨论,下面几篇文章将重点记录下自己在有关大小端问题的理解以及自己所做的试验。

       下面主要叙述两种不同的辨别cpu字节序的函数,由于程序比较简单,不再添加注释了。

#include <stdio.h>

bool isLittleEndian1(void)
{
	int i = 1;
	char j = *((char *)&i);
    if (j==1)
	{
		return true;
	}
	else
	{
		return false;
	}
}

bool isLittleEndian2(void)
{
	union fourByte
	{
		int i;
		char j;、
	} a;
	a.i = 1;
	if (a.j==1)
	{
		return true;
	}
	else
	{
		return false;
	}
}



int main(void)
{
	if (isLittleEndian1() == true)
    {
		printf("Cpu is little endian!\n");
	}
	else 
	{
		printf("Cpu is big endian\n");
	}

	if (isLittleEndian2() == true)
    {
		printf("Cpu is little endian!\n");
	}
	else 
	{
		printf("Cpu is big endian!\n");
	}
	return 0;
}


        第一种方法是通过将int强制类型转换成char来判断字节序,第二种方法是通过创建一个存储有int型和char型的4字节共同体来判断,本质上是一样的,只是实现手法不同而已。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值