大小端模式完全剖析x.docx

上传人:啊飒飒 文档编号:14448090 上传时间:2022-02-06 格式:DOCX 页数:4 大小:12.06KB
返回 下载 相关 举报
大小端模式完全剖析x.docx_第1页
第1页 / 共4页
大小端模式完全剖析x.docx_第2页
第2页 / 共4页
大小端模式完全剖析x.docx_第3页
第3页 / 共4页
大小端模式完全剖析x.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《大小端模式完全剖析x.docx》由会员分享,可在线阅读,更多相关《大小端模式完全剖析x.docx(4页珍藏版)》请在三一文库上搜索。

1、大小端模式完全剖析x 大小端模式完全剖析 小端模式:高位在高地址,低位在低地址(简单记为:高高低低) 大端模式:高在低,低在高 一般来说,Intel 芯片都是小端模式的,我的电脑用的是 Intel 的 CPU, 对于整数 0x12345678, 其在内存中的排列为: #include iostream using namespace std; int main() int n = 0x12345678; int *p = n; char *q = (char *)p; printf(%x %pn, *q, q); printf(%x %pn, *(q + 1), q + 1); printf(

2、%x %pn, *(q + 2), q + 2); printf(%x %pn, *(q + 3), q + 3); return 0; 结果: 78 C 56 D 34 E 12 0013FF7F 那么, 我们该如何判断大小端呢? 下面, 给出一个最简单的程序: #include iostream using namespace std; bool isLittleEndian() int n = 0x01020304; char *p = (char *)n; if(4 = *p) return true; return false; int main() if(isLittleEndia

3、n() cout little endian endl; else cout big endian endl; return 0; 当然, 有的书上用了共用体, 其实也是可以的。 想法 1:最近, 突然想到 tcp/ip 网络通信时, 就是用的大端字节序, 那么是否可以用 if(htonl(n) = n)来验证大小端系统呢? 我认为是可以的。 想法 2:另外, 下面程序可否验证大小端系统呢? #include iostream using namespace std; bool isLittleEndian() int n = 0x01020304; char c = n; if(4 = c) return true; return false; int main() if(isLittleEndian() cout little endian endl; else cout big endian endl; return 0; 我认为是不可以的, char c = n;的转换应该是跟大小端无关的。 哪里去搞个大端系统呢? 有大端系统的朋友, 帮我验证一下啊。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1