当前常用的字节序一般就两种,大端序和小端序。
下面列出四种字节序的表达方式。在对应平台下,内存布局为{0x,00,0x01,0x02,0x03}的四字节,表示为十六进制的值就如下面代码所示的。

ENDIAN_BIG      = 0x00010203,   /* 大端序 ABCD */
ENDIAN_LITTLE       = 0x03020100,   /* 小端序 DCBA */
ENDIAN_BIG_WORD     = 0x02030001,   /* 中端序 CDAB, Honeywell 316 风格 */
ENDIAN_LITTLE_WORD  = 0x01000302    /* 中端序 BADC, PDP-11 风格 */

gcc或clang中可以使用 __BYTE_ORDER__宏来判断

#include <stdio.h>
#include <stdlib.h>int main()
{
// 这两个宏是gcc或者clang支持的
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__puts("小端序");
#elif __BYTE_ORDER__== __ORDER_BIG_ENDIAN__puts("大端序");
#elseputs("未知字节序");
#endif // __BYTE_ORDER__return 0;
}

还有使用C++ 11constexpr关键字特性来做编译时判断的方法。但是我没有编译通过。
相关的可以看下面这两个网页

  • 在编译时检查字节序
    http://codereview.stackexchange.com/questions/45675/checking-endianness-at-compile-time
  • 编译器预定义宏
    https://sourceforge.net/p/predef/wiki/Endianness/

C++编译期间字节序判断相关推荐

  1. 【C语言】大小端字节序判断 常见笔试题型

    [前言]大家好,我是Catzzz666,一个一心让大家变强的博主.废话不说,让我们进入今天的正题. 大小端的引入: 我们先来看这样一段代码: 在内存中我们创建了局部变量a,那么a在内存中又是如何存储的 ...

  2. 大小端字节序介绍以及判断当前环境字节序的程序【C语言】

    文章目录 1.大小端字节序介绍 2. 判断当前环境的字节序程序 1.大小端字节序介绍 首先我们先来介绍什么是大端字节序,什么是小端字节序: 大小端字节序指的是数据在电脑上存储的字节顺序 小端字节序存储 ...

  3. linux网络编程一:主机字节序与网络字节序的的判断

     linux网络编程一:主机字节序与网络字节序的的判断(1)现代CPU的累加器一次能装载至少4字节(32位),即一个整数.那么这4字节在内存中排列的顺序将影响它被累加器装载成的整数值,这就是字节序问题 ...

  4. Golang 主机字节序的判断

    字节序按类别分两种,一种是小端(Little Endian),另一种是大端(Big Endian). (1)小端字节序,指一个单元在计算机中存放时按照低位在低地址,高位在高地址的模式存放: (2)大端 ...

  5. 网络基础1--计算机网络背景-局广城网范围,还有其他各种网,交换机路由器概念,ip地址,mac端口了解,网络协议,五层模型,传输中数据封装和分用,网络字节序,主机字节序如何判断。

    ** 计算机网络背景 ** 网络发展史:一个网络由路由器星形发散 局域网 1.指覆盖范围在1000米以内的网络 2.计算机的数量较多,通过交换机和路由器连在一起,也被称为服务器. 城域网: 1.指覆盖 ...

  6. 代码实现判断主机字节序(大端 or小端 )-- 面试题

    字节序有两种表示方法:大端法(big ending),小端法(little ending). 网络字节序采用的是大端法. 主机字节序不同的CPU采用的方法不一样,可以通过代码来查看自己主机的字节序. ...

  7. Socket通信之操作系统的字节序和位数

    关于Socket通信过程中字节序 在网络编程里,网络字节序是big-endian的,而大部分的PC的系统都是X86处理器系列,X86采用的是little-endian,所以需要将网络数据流转换成本地数 ...

  8. 1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

     1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端 ...

  9. 大小字节序的深入理解和鉴定系统字节序方法

    2019独角兽企业重金招聘Python工程师标准>>> 最近在项目中的soket通信时,遇到了大小字节序问题和网络传输时的字节序问题,现在给大家整理一下,希望大家对字节序有个比较深入 ...

最新文章

  1. 动态规划法求最大字段和时间复杂度_九章算法 | 动态规划:最长上升子序列
  2. Codeforces 1198 1199
  3. python解密md5值_Python之POST提交解密MD5
  4. mmap 内存映射详解
  5. java的vector_java中的Vector类
  6. 23种设计模式(3)-原型模式
  7. 动态添加select2input没样式_MIUI10壁纸升级:桌面动效壁纸与动态壁纸的前世今生...
  8. vb不能插入png图片_收藏备用!!VBA操作图片【插入导出删除】
  9. c# 获取html代码怎么写,C#获取网页源代码的方法
  10. 小红书下拉词是什么?小红薯下拉框怎么做?下拉词框如何应用?
  11. 动态规划的关键 —— 子问题 公式化
  12. oracle 重设基线,Oracle SQL执行计划基线总结(SQL Plan Baseline)
  13. CentOS6.6下搭建vsftpd+PAM认证
  14. 仿链家地图找房_iOS地图找房、周边(仿链家、安居客等地图找房)-高德地图-OC...
  15. 使用daemontools监控zookeeper,storm等进程
  16. 网桥(Bridge)作用详解
  17. 一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值
  18. html字体怎么变大变粗,ppt如何加粗字体更粗 幻灯片的艺术字怎么把字体变粗?...
  19. Spark SQL操作多数据源
  20. ORA-00001: unique constraint (...) violated解决方案

热门文章

  1. 智慧能源管理控制系统项目软件供应商
  2. slf4j+log4j在Java中实现日志记录
  3. MongoDB实战经验分享
  4. 如何做一个真正牛X 的开源项目
  5. 学习 python ORM 类库 SQLAlchemy 使用
  6. 北美前景最好25种职业 软件工程师独占鳌头
  7. 《 Ray Tracing from the Ground Up》官方代码的潜在的纹理映射问题
  8. Star-shaped polygon
  9. Q102:光线追踪场景(2)——PLYs(多种模型汇集)
  10. 大数据技术在应急事件处理中的启示