计算机存储字节序

本文介绍了计算机存储多字节整数时遇到的字节序问题,区分了小端存储和大端存储,并提供了适用于64位系统的字节序转换函数,强调了在跨平台文件传输时统一字节序的重要性。
摘要由CSDN通过智能技术生成

计算机在存储多字节的整数(不包含浮点数)时,会有字节序问题

字节序存储方式分为两种:小段存储、大端存储

小端存储字节序(littel endian)

        个人PC机基本上采用小端存储

        多字节的整数,整数的低字节数据存储在低地址中,整数的高字节数据存储在高地址中,与阅读习惯相反(以十六进制的整数四个字节 0x12345678 为例)

大端存储字节序(big endian)

        网络设备 数据在网络传输中,都采用大端字节序

        多字节的整数,整数的低字节数据存储在高地址中,整数的高字节数据存储在低地址中与,阅读习惯相同,存储时 从左往右存储整数(以十六进制的整数四个字节 0x12345678 为例)

        因此在文件传输时(个人—网络—个人)一定要统一字节序。那么要转换字节序,就要用到字节序转换函数(因为32系统没有64位的字节转换函数,因此只列64位系统中的字节转换函数)

//h   home 本地
//be  big endian  大端字节序(网络字节序)
//le  little endian

uint16_t htobe16(uint16_t host_16bits);  //本地字节序转 big endian(网络字节序)
uint16_t htole16(uint16_t host_16bits);  //本地字节序转 little endian
uint16_t be16toh(uint16_t big_endian_16bits);  
uint16_t le16toh(uint16_t little_endian_16bits);

uint32_t htobe32(uint32_t host_32bits);
uint32_t htole32(uint32_t host_32bits);
uint32_t be32toh(uint32_t big_endian_32bits);
uint32_t le32toh(uint32_t little_endian_32bits);

uint64_t htobe64(uint64_t host_64bits);
uint64_t htole64(uint64_t host_64bits);
uint64_t be64toh(uint64_t big_endian_64bits);
uint64_t le64toh(uint64_t little_endian_64bits);

以上就是计算机存储字节序的相关介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值