C++之如何判断大端小端
Posted 老猫想编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++之如何判断大端小端相关的知识,希望对你有一定的参考价值。
今天在浏览面经,发现如今的面试已经不仅仅满足于问细节了,而是要求说出思路细节并且要求动手实现。
如何判断大端小端是一道很经典的面试题,通常面试的回答就是通过union的特性来判断,今天,我们就来实现一下。
什么是大端小端
所谓的大端小端就是数据对齐的端模式,也就是计算机中采用的两种常用的字节存储机制,与CPU相关。
举个例子:
0x123456在内存中是怎么存储的呢?
大端模式
低地址---------->高地址
0x12 | 0x34 | 0x56
小端模式
低地址---------->高地址
0x56 | 0x34 | 0x12
如何判断大端小端
方法一 强制类型转换
bool isBigEndian()
{
short a=0x1234;
char b=*(char *)&a;
if(0x12==b) return true;
return false;
}
方法二 利用联合体
bool isBigEndian()
{
union NUM
{
short a;
char b;
}num;
num.a=0x1234;
if(0x12==num.b) return true;
return false;
}
以上是关于C++之如何判断大端小端的主要内容,如果未能解决你的问题,请参考以下文章