实现判断机器大小端的两种方法
2013-03-03 14:10
316 查看
大小端的更多内容参见:详解大端模式和小端模式
第一种方法
思路:利用指针的强制类型转换#include<stdio.h>
intmain(void)
{
intdata1=0x12345678;
inti;
for(i=0;i<4;i++)
{
printf("%#x----->%p\n",*((char*)&data1+i),(char*)&data1+i);
}
return0;
}
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
从输出的结果可以看出,高位地址0xbfc1b1ff存的是数据的高位0x12,低位地址0xbfc1b1fc存的是数据的低位0x78。所以是小端。同时我们亦可以看到,对数据data取地址实际指向的是存放低位数据的空间。
第二种方法
思路:利用共用体所有数据都从同一地址开始存储。
#include<stdio.h>
intmain(void)
{
inti;
unionendian
{
intdata;
charch;
}test;
test.data=0x12345678;
if(test.ch==0x78)
{
printf("littleendian!\n");
}
else
{
printf("bigendian!\n");
}
for(i=0;i<4;i++)
{
printf("%#x-------%p\n",*((char*)&test.data+i),(char*)&test.data+i);
}
return0;
}
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
相关文章推荐
- 判断机器大小端的两种实现方法
- 两种方法实现判断当前机器是大端还是小端
- 判断机器大小端的两种实现方法
- 判断机器大小端的两种实现方法
- 判断机器大小端的两种实现方法
- 判断机器大小端的两种实现方式
- Java判断链表是否有环的两种实现方法
- Go语言实现机器大小端判断代码分享
- javascript或asp实现的判断身份证号码是否正确两种验证方法
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。
- 【面试题】判断回文数-两种方法实现
- 编写程序判断大小端的两种方法
- Java判断单链表是否有环的两种实现方法
- 判断CPU为小端的两种方法
- Java判断单链表是否有环的两种实现方法
- C语言判断机器CPU大小端模式的两种方法
- 两种方法实现队满和队空的判断操作(循环队列)
- 判断机器大小端的方法总结
- 在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。 【方法一】:使用 try{} catch{} 语句。 我们可以在try语句块中试图
- 编写程序判断大小端的两种方法