判断系统是大端还是小端的两种方法

#include <iostream>
#include <stdio.h>
#include <malloc.h>
#include <string.h>

using namespace std;

//判断系统是大端还是小端:通过将&int转换为char*
int fun()
{
    int num = 1;

    // *((char*)&num)获得num的最低字节,为0x00,说明是大端 为0x01,说明是小端
    return *((char*)&num)?1:0; // 本机返回1:为大端
}

//判断系统是大端还是小端:通过联合体,因为联合体的所有成员都从低地址开始存放
int fun1()
{
    union test
    {
        int i;
        char c;
    };

    test t;
    t.i = 1;

    //如果是大端,则t.c为0x00,则t.c!=1,返回0 是小端,则t.c为0x01,则t.c==1,返回1
    return (t.c==1);
}

int main()
{
    cout << fun() << endl;
    cout << fun1() << endl;
}
时间: 2024-10-13 11:57:05

判断系统是大端还是小端的两种方法的相关文章

【转】如何判断CPU是大端还是小端模式

原文网址:http://blog.csdn.net/ysdaniel/article/details/6617458 如何判断CPU是大端还是小端模式 http://blog.sina.com.cn/s/blog_66a61f310100i7m0.html MSB:Most Significant Bit  ------- 最高有效位    LSB:Least Significant Bit ------- 最低有效位 大端模式(big-edian) big-endian:MSB存放在最低端的地

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

[转帖来自]:http://blog.csdn.net/forestlight/article/details/6933528 今天看<linux程序设计>中关于跨平台需要注意的事项,看到了大端小端的问题.突然想起实验室一同学的笔试题,如何判断主机的大端还是小端. 所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址.比如0x12345678在大端机上是12345678,在小端机上是78564312,而一个主机是大端还是小端要看cpu类型以及运行在上面的操作系统.同一款

用C语言,如何判断主机是 大端还是小端(字节序)

所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址.比如 0x12345678 在大端机上是 12345678,在小端机上是 78564312,而一个主机是大端还是小端要看CPU类型以及运行在上面的操作系统.同一款CPU在不同的操作系统使用的大小端情况是不同的.当然我们通常使用的 x86 + windows是小端. 测试大小端一般使用 union的特性.union是一个联合体,所有变量公用一块内存,只是在不同的时候解释不同.其在内存中存储是按最长的那个变量所需要的位数来

一个程序判断CPU是大端还是小端

CPU的字节序分为大端模式和小端模式. 大端: 一个数据字的低位字节存放到高位地址,高位字节存放到低位字节. 小端相反.建议只记住一种,免得记混淆. 1 bool CheckCPUIsLittleEnd() 2 { 3 union w 4 { 5 int a; 6 char b; 7 }; 8 w.a = 1; 9 if(w.b == 1) 10 return true; // 小端模式 11 return false; 12 } 当时看了这个代码,唯一疑惑的地方在于:当获取char类型的变量时

双系统Ubuntu下修复启动项的两种方法

1,先安装Win7,再安装Ubuntu,则在安装完ubuntu后会直接进入Ubuntu系统,进入系统后执行: #sudo updata-grub 更新grub,让其找到win7的bootloader,重启,在grub界面即可看到进入win7的选项. 2,先安装了Ubuntu,再安装的win7.此时,硬盘的MBR里面之前的grub引导记录被覆盖,需要重新将grub信息写入MBR中.由于磁盘中已有ubuntu系统,只需将该系统中grub信息写进MBR即可.方法如下:制作一个ubuntu系统的Live

判断python字典中key是否存在的两种方法

今天来说一下如何判断字典中是否存在某个key,一般有两种通用做法,下面为大家来分别讲解一下: 第一种方法:使用自带函数实现. 在python的字典的属性方法里面有一个has_key()方法,这个方法使用起来非常简单. 例: 1 2 3 4 5 #生成一个字典 d = {'name':{},'age':{},'sex':{}} #打印返回值 print d.has_key('name') #结果返回True 第二种方法:使用in方法 1 2 3 4 5 #生成一个字典 d = {'name':{}

判断计算机是大端还是小端

我们完全可以利用union 类型数据的特点:所有成员的起始地址一致. 到现在,应该知道怎么写了吧?参考答案如下: int checkSystem( ) { union check { int i; char ch; } c; c.i = 1; return (c.ch ==1); }

判断大端与小端

//写一个程序判断编译器是大端还是小端 #include<stdio.h> #include<stdlib.h> int main() { int a = 0x11223344; char *p = (char*)&a; if (*p == 0x11) { printf("大端"); } else { printf("小端"); } system("pause"); return 0; } 大于一个字节的程序都存在

我如何确定一个机器的字节顺序是大端还是小端?

通常的技巧是使用一个指针: int x = 1; if(*(char *)&x == 1) printf("little-endian\n"); else printf("big-endian\n"); 或者一个union: union { int i; char c[sizeof(int)]; } x; x.i = 1; if(x.c[0] == 1) printf("little-endian\n"); else printf(&qu