博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何判断主机是大端还是小端(字节序)
阅读量:5112 次
发布时间:2019-06-13

本文共 769 字,大约阅读时间需要 2 分钟。

【转帖来自】:http://blog.csdn.net/forestlight/article/details/6933528

 今天看《linux程序设计》中关于跨平台需要注意的事项,看到了大端小端的问题。突然想起实验室一同学的笔试题,如何判断主机的大端还是小端。

        所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址。比如0x12345678在大端机上是12345678,在小端机上是78564312,而一个主机是大端还是小端要看cpu类型以及运行在上面的操作系统。同一款cpu在不同的操作系统使用的大小端情况是不同的。当然我们通常使用的x86+windows是小端。

        测试大小端一般使用union的特性。union是一个联合体,所有变量公用一块内存,只是在不同的时候解释不同。其在内存中存储是按最长的那个变量所需要的位数来开辟内存的。

       代码如下:     

#include 
using namespace std; union { int number; char s; }test; bool testBigEndin() { test.number=0x01000002; return (test.s==0x01); } void main() { if (testBigEndin()) cout<<"big"<

    其中union的实际内存长度是int,即一个字,在32位机上是32位。而char是一个byte,只会取第一个低地址字节。所以他的值可以用来判断大小端。

转载于:https://www.cnblogs.com/kzcdqbz/p/4743494.html

你可能感兴趣的文章
三极晶体管放大电路实验
查看>>
UnrealEngine4和3DMax的配合_准备资源
查看>>
(初学者)初学者的编程的苦恼
查看>>
DataTable 去重合并
查看>>
剑指Offer_27_字符串的排列
查看>>
12-文本属性和字体属性
查看>>
Chrome 开发者工具的Timeline和Profiles提高Web应用程序的性能[转]
查看>>
混淆Android JAR包的方法
查看>>
今天实现了一个功能就是,树结点的拖动
查看>>
自动补全插件之二
查看>>
docker 安装 FastDFS
查看>>
Android 样式
查看>>
Oracle DBHelper
查看>>
啊金学习javascript系列一之javascript整体印象
查看>>
[Go] Returning Multiple Values from a Function in Go
查看>>
[Polymer] Introduction
查看>>
Zabbix实战-简易教程--拓扑图(Maps)
查看>>
开启html元素的编辑模式contenteditable="true"
查看>>
WIKI 配置参数
查看>>
Longest Valid Parentheses leetcode java
查看>>