news 2026/2/2 3:42:42

大小端存储

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大小端存储

大小端存储 (Endianness) 学习笔记

1. 什么是大小端?

在计算机系统中,多字节数据(如int,float等)在内存中占用的字节数超过 1 个。当我们将这些数据存储在连续的内存地址中时,就涉及到了字节序(Byte Order)的问题,即:高位字节低位字节谁先存在低地址,谁后存在高地址。

  • MSB (Most Significant Byte): 最高有效字节(数据的“高位”)。
  • LSB (Least Significant Byte): 最低有效字节(数据的“低位”)。

例如,十六进制数0x12345678

  • 0x12是 MSB (高位)
  • 0x78是 LSB (低位)

2. 大端模式 (Big-Endian)

定义:数据的高位字节存储在内存的低地址中,而数据的低位字节存储在内存的高地址中。

特点

  • 内存中的字节顺序与我们平时书写/阅读数字的顺序(从左到右)一致。
  • 也就是“高位在前”。

示例
存储0x12345678(假设起始地址为0x100)

内存地址0x100 (低)0x1010x1020x103 (高)
数据0x120x340x560x78

应用场景

  • 网络字节序 (Network Byte Order) 标准(TCP/IP 协议栈)。
  • 某些 RISC 架构处理器(如 SPARC, PowerPC 的早期版本)。

3. 小端模式 (Little-Endian)

定义:数据的低位字节存储在内存的低地址中,而数据的高位字节存储在内存的高地址中。

特点

  • 也就是“低位在前”。
  • 这种存储方式在进行类型转换(如 int 转 short)或加法运算时,CPU 处理起来可能更方便(低位对齐)。

示例
存储0x12345678(假设起始地址为0x100)

内存地址0x100 (低)0x1010x1020x103 (高)
数据0x780x560x340x12

应用场景

  • 常见的主机字节序 (Host Byte Order)。
  • x86 / x64 架构 (Intel, AMD)。
  • ARM (默认通常是小端,但可配置)。

4. 如何判断当前机器的大小端?

我们可以利用 C 语言的union特性或指针强制转换来检测。

方法一:使用 Union

union的成员共享同一块内存空间。

#include<stdio.h>intcheck_endian(){union{inti;charc;}un;un.i=1;// 0x00000001// 如果是小端,低位 0x01 存在低地址,c 读取低地址也是 1// 如果是大端,高位 0x00 存在低地址,c 读取低地址则是 0returnun.c;}intmain(){if(check_endian()==1){printf("当前机器是:小端模式 (Little-Endian)\n");}else{printf("当前机器是:大端模式 (Big-Endian)\n");}return0;}

方法二:使用指针转换

#include<stdio.h>intmain(){inta=1;char*p=(char*)&a;// 获取 int 的低地址字节if(*p==1){printf("小端\n");}else{printf("大端\n");}return0;}

5. 网络字节序与主机字节序转换

由于不同的计算机可能采用不同的字节序,为了保证数据在网络传输中的正确性,TCP/IP 协议规定:网络传输使用大端模式 (Big-Endian)

因此,在发送数据前,需要将主机字节序转换为网络字节序;接收数据后,需要将网络字节序转换为主机字节序

常用函数 (在<arpa/inet.h><winsock2.h>中)

  • htons(): Host to Network Short (16位)
  • htonl(): Host to Network Long (32位)
  • ntohs(): Network to Host Short (16位)
  • ntohl(): Network to Host Long (32位)

记忆口诀

  • h(Host) 代表主机
  • n(Network) 代表网络
  • s(Short) 代表 16 位
  • l(Long) 代表 32 位

6. 总结

特性大端模式 (Big-Endian)小端模式 (Little-Endian)
存储方向高位 -> 低地址低位 -> 低地址
直观性符合人类阅读习惯不符合阅读习惯,但在逻辑电路处理上有优势
典型应用网络协议、PowerPCx86, ARM, Windows, Linux (大部分)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/20 6:21:54

Python ADB终极指南:纯Python实现Android设备控制

Python ADB终极指南&#xff1a;纯Python实现Android设备控制 【免费下载链接】pure-python-adb This is pure-python implementation of the ADB client. 项目地址: https://gitcode.com/gh_mirrors/pu/pure-python-adb &#x1f680; 在移动应用开发和测试领域&#x…

作者头像 李华
网站建设 2026/2/1 11:13:46

3秒搞定Instagram视频下载的终极免费方案

3秒搞定Instagram视频下载的终极免费方案 【免费下载链接】instagram-video-downloader Simple website made with Next.js for downloading instagram videos with an API that can be used to integrate it in other applications. 项目地址: https://gitcode.com/gh_mirr…

作者头像 李华
网站建设 2026/1/24 8:40:11

区块链+AI语音:将IndexTTS 2.0生成的声音铸造成NFT

区块链AI语音&#xff1a;将IndexTTS 2.0生成的声音铸造成NFT 在短视频、虚拟偶像和AIGC内容爆炸式增长的今天&#xff0c;一个声音的价值正在被重新定义。过去&#xff0c;一段高质量配音往往需要专业声优数小时录制与后期处理&#xff1b;如今&#xff0c;只需5秒音频样本&a…

作者头像 李华
网站建设 2026/1/27 5:12:25

Path of Building PoE2:颠覆传统角色规划的革命性工具

Path of Building PoE2&#xff1a;颠覆传统角色规划的革命性工具 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 还在为《流放之路2》复杂的角色构建而头疼吗&#xff1f;Path of Building PoE2&#x…

作者头像 李华
网站建设 2026/1/25 7:01:16

BlockTheSpot终极使用指南:免费解锁Spotify高级功能的完整教程

BlockTheSpot终极使用指南&#xff1a;免费解锁Spotify高级功能的完整教程 【免费下载链接】BlockTheSpot Video, audio & banner adblock/skip for Spotify 项目地址: https://gitcode.com/gh_mirrors/bl/BlockTheSpot 想要在Windows电脑上免费享受Spotify Premium…

作者头像 李华
网站建设 2026/1/30 8:30:14

【Dify数据处理效率提升300%】:你不可不知的响应格式优化策略

第一章&#xff1a;Dify响应数据格式的核心价值Dify 作为一款面向 AI 应用开发的低代码平台&#xff0c;其响应数据格式的设计直接影响到系统的可集成性、可维护性与开发者体验。统一、结构化的响应格式不仅提升了前后端协作效率&#xff0c;也为第三方服务调用提供了清晰的数据…

作者头像 李华