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++之如何判断大端小端的主要内容,如果未能解决你的问题,请参考以下文章

手把手写C++服务器(20):网络字节序与主机字节序大端小端与共用体

如何在 C++ 中的大端和小端值之间进行转换? [复制]

C++怎么判断大小端模式

判断计算机是大端还是小端

flutter大端小端转换

java内存,大端小端判断