C语言判断大小端

 1 #include <stdio.h>
 2 typedef unsigned char BYTE;
 3 int main(int argc, char* argv[])
 4 {
 5     unsigned int num,*p;
 6     p = &num;
 7     num = 0;
 8     *(BYTE *)p = 0xff;
 9     if(num == 0xff)
10     {
11         printf("little\n");
12     }
13     else //num == 0xff000000
14     {
15         printf("big\n");
16     }
17     return 0;
18 }

或者

 1 int checkCPU()
 2 { 4    union w
 5    {
 6       int a;
 7       char b;
 8    }c;
 9    c.a = 1;
10    return (c.b == 1);12 }
时间: 2024-10-27 09:18:04

C语言判断大小端的相关文章

【C语言】大小端判断。

(一)联合体判断大小端 首先大小端是什么? 如果我们判断第一个字节里存放的是不是 数字1,那么就可以确定其存储方式. #include <stdio.h> union DX { int a; char c; }un; int main () { un.a = 1; if(un.c == 1) { printf("小端存储\n"); } else { printf("大端存储\n"); } return 0; } (二)用指针判断大小端 #include

判断大小端的方法(java和c++)

首先我们给出大小端的定义: 小端:较高的有效字节存放在较高的的存储器地址,较低的有效字节存放在较低的存储器地址. 大端:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址. 将0x12345678写入到以1000h开始的内存中,这里0x12346578中0x12~0x78的地址是从高到低 如果,我们的机器是小端存储的话,结果为: 数据      地址0x78        1000H0x56        1001H0x34        1002H0x12      

C++如何判断大小端

http://bbs.chinaunix.net/thread-1257205-1-1.html #include <stdio.h>#include <string.h>#include <stdlib.h> int main(void){        unsigned short v = 0x0102;        unsigned char *p = (unsigned char *)&v; if (*p == 0x01)               

【C语言】大小端的判断

在文章的开头我首先要介绍一下大小端的概念: 大端模式: 是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 小端模式: 是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致. 若将00000001放入计算机中就有两种方法: ----------------

C语言之大小端问题

1:大小端名字的由来及发展 (1)在乔纳森·斯威夫特的著名讽刺小说<格列夫游记>中,小人国内部分裂成Big-endian和Little-endian两派,区别在于一派要求从鸡蛋的大头把鸡蛋打破,另一派要求从鸡蛋的小头把鸡蛋打破.斯威夫特借以讽刺英国的政党之争,在计算机工业中指数据储存顺序的分歧. (2)后来计算机通信发展起来后,遇到一个问题就是:在串口等串行通信中,一次只能发送1个字节.这时候我要发送一个int类型的数就遇到一个问题.int类型有4个字节,我是按照:byte0 byte1 by

Linux中判断大小端的一种方法

大小端的定义无需赘言,常用的方法有使用联合体和指针法,如: int checkCPU() { union w { int a; char b; }c; c.a = 1; return (c.b == 1); // 小端返回TRUE,大端返回FALSE } 实际上Linux操作系统的源码中,其判断更为简洁: static union { char c[4]; unsigned long mylong; } endian_test = {{ 'l', '?', '?', 'b' } }; #defi

[C/C++]_[初级]_[判断大小端序Little Endian Order]

场景: 1. 在读取硬盘数据和媒体数据时,需要根据读取的数据进行大小端序的转换,以正确识别数据.其中一个处理就是首先要判断cpu支持的大小端序情况才能转换. 2. Little Endian Order: 低地址存低位(整数的高低位)的数据. test.cpp #include <stdio.h> #include <iostream> using namespace std; //1.方法1,通过判断int的低位是否存储了数值. int IsLittleEndian1() { i

C语言一个语句判断大小端

1 int isLittleEndian(void) 2 { 3 return *(char *)(int []){1} == 1; 4 } 关于Compound Literals,https://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Compound-Literals.html

判断大小端序的C程序

概念 大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中. 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节. 如5A6C中5A是高字节.6C是低字节,在大端序机器中,高字节位于低地址中,即在大端序中按照5A6C存储,在小端序中按照6C5A存储. 为什么存在这种模式 因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit.但是在C语言中除了8bit的char之外,还有16bit的