写(抄)了一段c程序,用来判断机器存储器存储数值(当然不仅数值)时候用的是小端法还是大端法。先把int或者float转换成char指针,或者unsigned char指针,然后一个一个字节的输出,其中char_with_or_not_unsigned是编译后的可执行文件名:
yymt@fanhua:~$ ./char_with_or_not_unsigned 123
int:
char pointer: 7b 00 00 00
unsigned char pointer: 7b 00 00 00
float:
char pointer: 00 00 fffffff6 42
unsigned char pointer: 00 00 f6 42
输入123时候,int值的输出是相同的,而float值不同。123的16进制表示是0x7b,这里判断出是小端法。
当输入1234的时候,有符和无符输出就都不同了(其中1234的16进制表示是0x04d2):
yymt@fanhua:~
$ ./char_with_or_not_unsigned 1234
int:
char pointer: ffffffd2 04 00 00
unsigned char pointer: d2 04 00 00
float:
char pointer: 00 40 ffffff9a 44
unsigned char pointer: 00 40 9a 44
注意,int转型成char pointer输出的时候,第一个字节都多出一串fffff,为什么呢?
我的机子是ubuntu 11.10 server版,64位的。另,这里都是小端法表示的。
代码是:
#include<stdio.h>
typedef char* char_pointer;
typedef unsigned char* uchar_pointer;
void print_byte(char_pointer v,int len){
for(int i = 0;i < len;i++){
printf(" %.2x",v[i]);
}
printf("\n");
}
void print_ubyte(uchar_pointer v,int len){
for(int i = 0;i < len;i++){
printf(" %.2x",v[i]);
}
printf("\n");
}
int main(int argc,char* argv[]){
if(argc == 1){
return 0;
}
int a = atoi(argv[1]);
float f = (float)a;
printf("int:\n");
printf(" char pointer: ");
print_byte((char_pointer)&a,sizeof(int));
printf(" unsigned char pointer:");
print_ubyte((uchar_pointer)&a,sizeof(int));
printf("float:\n");
printf(" char pointer: ");
print_byte((char_pointer)&f,sizeof(float));
printf(" unsigned char pointer:");
print_ubyte((uchar_pointer)&f,sizeof(float));
return 0;
}
分享到:
相关推荐
所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往...
前些时候面试的时候的考题,现场没有写好,回来仔细想了想写出来的。聊表慰藉吧。
运行程序,可判识并输出程序所在平台的存储方式,是大端还是小端。
大端 小端
little endian,big endian 小端存储、大端存储.zip
利用联合的方法,判断X86平台是小端序存储还是大端序存储
如何判断你的计算机是大端还是小端存储?
本文主要描述大端小端的概念,分类和区别,还讲述了他们的由来,以及各自的优缺点,对初识者具有很大的帮助
小端大端透析-附检测代码,帮你理清计算机、单片机的大小端存储,含图片形象解析;附测试代码,方便测试;是计算机专业和电子专业以及广大单片机开发人员必备资料
描述大端、小端模式,给出了如何判断CPU是哪种模式的代码!
西门子PLC接口,大端和小-Endian的存储格式pdf,西门子PLC接口,大端和小-Endian的存储格式:本文介绍了SINUMERIK:PLC接口,和Little-Endian的Big-Endian的存储格式
大端机小端机检查器-用于检查PC是大端机还是小端机
关于字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。 ...
关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。
大端和小端的区别,数据在内存里面存放的方式,源代码讲解,发上来大家一起学习下!
大端存储和小端存储秒懂+程序员+秒懂
iOS 大端格式和小段格式 文档
实现文件大端模式 (BIG ENDIAN)与小端模式(LITTER ENDIAN)的互相转换。 程序使用很简单,选择文件(只能选择bin格式结尾的镜像) 然后点转换就ok啦~~文件不支持其他后缀的 如果需要转换,把后缀改成.bin也ok~~...
自己根据spy3中的大端与小端的使用,总结出大小端的理解与区别,及intel与motorola
字节序转换辅助类,short大小端转换,ushort大小端转换,int大小端转换,uint大小...short类型 小端转大端,short类型 大端转小端,int类型 小端转大端,int类型 大端转小端,long类型 小端转大端,long类型 大端转小端