判断机器大小端的两种实现方法

2016-02-19 11:04 62 1 收藏

今天图老师小编要向大家分享个判断机器大小端的两种实现方法教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - 编程语言 】

第一种方法

思路:利用指针的强制类型转换

代码如下:

#include stdio.h
int main(void)
{   
int data1 = 0x12345678;  
int i;  
for(i=0; i4; i++) 
{      
printf("%#x -----%pn",*((char *)&data1 + i),(char *)&data1 + i);  
}    
return 0;
}

从输出的结果可以看出,高位地址0xbfc1b1ff存的是数据的高位0x12,低位地址0xbfc1b1fc存的是数据的低位0x78。所以是小端。同时我们亦可以看到,对数据data取地址实际指向的是存放低位数据的空间。

第二种方法

思路:利用共用体所有数据都从同一地址开始存储。

代码如下:

#include stdio.h

int main(void)

{

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

    int i;

    union endian

    {

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

        int data;

        char ch;

    }test;

    test.data = 0x12345678;

    if(test.ch == 0x78)

    {

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

        printf("little endian!n");

    }

    else

    {

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

        printf("big endian!n");

    }

    for(i=0; i4; i++)

    {

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

        printf("%#x ------- %pn",*((char *)&test.data + i),(char *)&test.data + i);

    }

    return 0;

}

来源:http://www.tulaoshi.com/n/20160219/1596485.html

延伸阅读
标签: 软件教程 excel
如今提倡构建节约型社会,无纸化办公就符合这一要求,虽然真正意义上的无纸化办公难以实现,但要做到节约用纸却并不困难。 Microsoft office word的双面打印功能就是一个很好的例子。然而跟Word不同的是, Excel从来就没有提供双面打印的功能,Excel 2007中也不例外,因此我们只有自己动手,才能让Excel 2007也可以双面打印。 ...
标签: Web开发
我们知道,给JavaScript类添加原形(prototype)方法是很简单的。而且常用的有下面这两种方法,可是这两种方法在使用时有区别吗?      JScript Class:  代码如下:  function JSClass()   {         }      Extend...
眼睛变大是人物图片美化中经常用到的。方法有很多,下面介绍两种最基础的方法。一种是用变形工具强行拉大;一种是用液化滤镜中的膨胀工具变大。两种方法都比较快。 最终效果 一、变换比列放大法 1、我们打开图片,选中椭圆选框工具,选中脸部分。执行选择-修改-羽化-5px(Shift+F6)。 2、Ctrl+J复制出眼睛部...
1.大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端模式相反  2.为什么有大小端之分???  因为在计算机系统中,存储是以字节为单位的,每个地址单元都对应着一个字节,一个字节=8bit。在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器)。对于位数大...
代码如下: package com.demos; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class GetScreenActivity extends Activity { private Button firstBtn = null; private Button secBtn = null; @Override pr...

经验教程

692

收藏

44
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部