社区
C++ 语言
帖子详情
大虾帮忙 write a function to judge current paltform using big endian and little endian
wanlly_311
2005-11-09 12:45:41
题目是什么意思啊?大虾帮忙
...全文
234
16
打赏
收藏
大虾帮忙 write a function to judge current paltform using big endian and little endian
题目是什么意思啊?大虾帮忙
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
晨星
2005-11-10
打赏
举报
回复
void judge()
{
int i = 1;
char* p = (char*)&i;
if(*p)
printf("little-endian");
else
printf("big-endian");
}
晨星
2005-11-10
打赏
举报
回复
lengxiao_wang()
的方法是不对的。
beyondtkl
2005-11-10
打赏
举报
回复
可以上网搜索哦。。。
wohow
2005-11-10
打赏
举报
回复
to lengxiao_wang()
你修改后的代码在任何机器上都是little-endian
wanlly_311
2005-11-09
打赏
举报
回复
呵呵 谢谢各位大虾:)
lengxiao_wang
2005-11-09
打赏
举报
回复
to wohow() 写错了一点,应该是==
void judge()
{
int i = 0x1234;
char c =i;
if(c == 0x12)
printf("big-endian");
else
printf("little-endian");
}
goodluckyxl
2005-11-09
打赏
举报
回复
大小端判断就是看大于1字节的变量赋值后内存组织形式
顺序的是大端 反序是小端
在cpu的寄存器中一般专门有这个属性设置
但是处在OS下是没有权限改写的
在PC的集成IDE下的大小端设置是软模拟实现而并非真正设置了cpu属性
goodluckyxl
2005-11-09
打赏
举报
回复
test
wohow
2005-11-09
打赏
举报
回复
如果不考虑if(c=0x12)中的==的错误的话
wohow
2005-11-09
打赏
举报
回复
to lengxiao_wang()
你的程序不对吧,任何机器都成了little-endian
lengxiao_wang
2005-11-09
打赏
举报
回复
void judge()
{
int i = 0x1234;
char c =i;
if(c = 0x12)
printf("big-endian");
else
printf("little-endian");
}
xiaonian_3654
2005-11-09
打赏
举报
回复
int i = 1;
return i == *((char*)&i); //return 1 if little endian
JohnTitor
2005-11-09
打赏
举报
回复
#include <iostream>
using namespace std;
int main()
{
union{
short s;
char c[2];
}un;
un.s = 0x0102;
if(un.c[0] == 1 && un.c[1] == 2)
cout<<"big-endian"<<endl;
else if(un.c[0] == 2 && un.c[1] == 1)
cout<<"little-endian"<<endl;
return 0;
}
megaboy
2005-11-09
打赏
举报
回复
这句话翻译过来就是:写一个判断当前平台是大端字节顺序还是小端字节顺序的函数。所谓大端小端,指的是二进制字节在内存中的排列方式,intel的cpu使用小端排列,低位字节在前,高位字节在后,与地址增长方向一致;而motorola的cpu则使用大端排列,低位字节在后,高位字节在前,与地址增长方向相反。
doway
2005-11-09
打赏
举报
回复
下半年台 -> 平台
doway
2005-11-09
打赏
举报
回复
哈,分拿来!
意思是说让你写一函数,检查当前下半年台(即操作系统)使用的是 big endian 字节顺序还是 little endian 字节顺序。
测试处理器是大端序还是小端序(
Big
Endian
or
Li
ttle
Endian
)
/* How can I determine whether a machine's byte order is
big
-
endian
or
li
ttle
-
endian
? */ #include int main(int argc, char const *argv[]) { /*method 1*/ int x = 1; if(*(char *)&x == 1) printf("
li
Big
-
endian
&
Li
ttle
-
endian
Suppose that each unit is 8-bit in the memory, and there exists data 0x1234abcd stored from 0x00000000. Byte orders of
Li
ttle
-
endian
and
Big
-
endian
are as below: In
Li
ttle
-
endian
mode, the most s
Big
-
endian
和
Li
ttle
-
endian
详解
网上有一篇博文分析的非常详细,这里列出参考地址:http://blog.csdn.net/ce123_zhouwei/article/details/6971544 这里自己列出一些觉得重要的地方,供后续参考。 一、大小端定义
Big
-
Endian
和
Li
ttle
-
Endian
的定义如下: 1)
Li
ttle
-
Endian
就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
测试主机序号的例子(大端序、小端序、
big
_
endian
、
li
ttle
_
endian
)
1 由来: 大端序小端序原本是 《格列佛游记》中小人国一场争议而得来的,在小人国中,为了吃鸡蛋分为两派人,一派人建议从大头吃(称为
big
_
endian
),一拍人建议从小头吃(称为
li
ttle
_
endian
)。两派人各持己见,为此发起内战,还弄死了几个皇帝。呵呵,后来一个学者在他的论文中引用起来用来描述主机中多字节数据在 内存存储的顺序问题,命名为
big
_
endian
和
li
ttle
_
endian
C# Tips: How to tell if system is
li
ttle
endian
or
big
endian
?
上回书说到,如果用C语言来判断系统的字节存储顺序
Li
ttle
endian
和
Big
endian
,函数如下: #include #include #include union Test
Endian
_Unit { uint16_t value; uint8_t byt
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章