大小端判断

bool checkCPU()

{

union w

{

int a;

char c;

}t;

t.a = 1;

return (t.c == 1);

}

注:大端从高位内存开始存储数据小端从低位内存开始存储数据。上例如果返回true,则为小端,false为大端。

时间: 2025-02-02 00:01:09

大小端判断的相关文章

计算机字节的大小端判断

最近在学习微机接口技术和网络编程基础,在这两门学科里都提到计算机字节的大小端判断问题 什么是大小端呢? 如果在连续的两个地址空a,a+1面存入一个占用这两个空间的整数.以十六位数为例 0x0102   如果a里面是01 则说明是大端存储  如果a里面是02则说明是小端存储 c语言代码: #include <stdio.h>union { short num; char num1[sizeof(short)];} un; int main(int argc,char **argv) { un.n

【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

CPU大小端判断

两种方式:1.通过指针         2.通过联合体,联合体里面的数据都是按顺序存储的,而且不论联合体里面有多少数据类型,联合体长度是最长的数据类型的长度.不论初始化多少联合体里面的数据,有效的是最后一个初始化数据,因为联合体里面的各种数据类型共用相同的地址,都从相同的地址开始存放. 1 1 #include<stdio.h> 2 2 union Data{ 3 3 char ch; 4 4 short data; 5 5 }; 6 6 union Data u_Data; 7 7 //ju

CPU的大小端及如果判断

不同体系结构的CPU,数据在内存中存放的排列顺序是不一样的. 存储器中对数据的存储是以字节(Byte)为基本单位的,因此,字(Word)和半字(Half-Word)在存储器中就有两种次序,分别称为:大端模式(Big Endian)和小端模式(Little Endian). 大端存储模式是指字或半字的最高字节(Most Significant Bit,MSB)存放在内存的最低位字节地址上,而字数据的低字节则存放在高地址中.打个比方,有一个字为0×12345678,这个字由4个字节组成, 从高位到低

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语言】大小端的判断

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

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)               

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

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