当前位置: 首页 > news >正文

字节序

字节序

字节序:字节在内存中存储的顺序

    小端字节序:数据的高位字节存储在内存的高位地址,低位字节存储在内存的低位地址

    大端字节序:数据的低位字节存储在内存的高位地址,高位字节存储在内存的低位地址

bit ( 比特 )和 Byte(字节)

电脑是以二进制存储以及发送接收数据的。二进制的一位,就叫做 1 bit。也就是说 bit 的含义就是二进制数中的一个数位,即 “0” 或者 "1"。

字节 Byte 和比特 bit 的换算关系是 1 Byte = 8 bit 。

需要了解的是,1 KB 并不是一千字节,因为计算机只认识二进制,所以在这里的 KB,是 2 的 10 次方,也就是 1024 个字节。

网络线路的计量单位,也就是我们通常说的 2M 宽带,10 M 宽带的单位,是 比特每秒(bits per second)。比特每秒 的缩写为 bps,意思是每秒接收的平均比特数。

  • 存储单位和网速的单位,不管是 B 还是 b,代表的都是 字节 Byte。
  • 带宽的单位,不管是 B 还是 b,代表的都是 比特 bit 。

 

举例

为什么两个16进制数可以存储1字节:1字节有8比特,也就是八位。

一个十六进制数转换为2进制数也就是4位,两个就是8位。 

在程序设计中,以0x开始的数据表示16进制。 比如0x00表示十进制中的0,0x01表示1

“0x”是后面是十六进制数字的标示,后面是数字的主题。比如0x01其实是【0x】【01】主题部分01,就是十六进制的01,也就是一。 如果是0x0f,那表示就是15.因为a~f分别代表的是十六进制中的10~15.

字节序表示方式:

 

 字节序转换函数(***):


    网络通信时,需要将主机字节序转换成网络字节序(大端),
    另外一段获取到数据以后根据情况将网络字节序转换成主机字节序。

    // 转换端口
    uint16_t htons(uint16_t hostshort);        // 主机字节序 - 网络字节序
    uint16_t ntohs(uint16_t netshort);        // 主机字节序 - 网络字节序

    // 转IP
    uint32_t htonl(uint32_t hostlong);        // 主机字节序 - 网络字节序
    uint32_t ntohl(uint32_t netlong);        // 主机字节序 - 网络字节序

#include <stdio.h>
#include <arpa/inet.h>int main() {// htons 转换端口unsigned short a = 0x0102;printf("a : %x\n", a);unsigned short b = htons(a);printf("b : %x\n", b);printf("=======================\n");// htonl  转换IPchar buf[4] = {192, 168, 1, 100};int num = *(int *)buf;int sum = htonl(num);unsigned char *p = (char *)&sum;printf("%d %d %d %d\n", *p, *(p+1), *(p+2), *(p+3));printf("=======================\n");// ntohlunsigned char buf1[4] = {1, 1, 168, 192};int num1 = *(int *)buf1;int sum1 = ntohl(num1);unsigned char *p1 = (unsigned char *)&sum1;printf("%d %d %d %d\n", *p1, *(p1+1), *(p1+2), *(p1+3));// ntohsreturn 0;
}

 

http://www.lryc.cn/news/17987.html

相关文章:

  • PDF文件怎么转图片格式?转换有技巧
  • 筑基七层 —— 数据在内存中的存储?拿来吧你
  • Typecho COS插件实现网站静态资源存储到COS,降低本地存储负载
  • 2月23号作业
  • 因果推断方法(一)合成控制
  • 数据结构第12周 :( 有向无环图的拓扑排序 + 拓扑排序和关键路径 + 确定比赛名次 + 割点 )
  • Linux安装docker(无网)
  • 解决JNI操作内核节点出现写操作失败的问题
  • 纵然是在产业互联网的时代业已来临的大背景下,人们对于它的认识依然是短浅的
  • 干翻 nio ,王炸 io_uring 来了 !!(图解+史上最全)
  • ur3+robotiq ft sensor+robotiq 2f 140+realsense d435i配置rviz,gazebo仿真环境
  • ASP.NET Core MVC 项目 AOP之Authorization
  • 智能新冠疫苗接种助手管理系统
  • Python+Selenium4元素交互1_web自动化(5)
  • 2023双非计算机硕士应战秋招算法岗之深度学习基础知识
  • Python opencv进行矩形识别
  • 网安入门必备的12个kali Linux工具
  • 【测试面试】头条大厂,测试开发岗真实一面。你能抵得住吗?
  • 分享app的测试技巧
  • HTML 基础【快速掌握知识点】
  • SpringBoot入门(二)
  • 大数据|大数据基础(概念向)
  • 若依配置教程(九)若依前后端分离版部署到服务器Nginx(Windows版)
  • 【仔细理解】计算机视觉基础1——特征提取之Harris角点
  • Elasticsearch7.8.0版本进阶——近实时搜索
  • OAK相机深度流探测草莓距离
  • 文件共享服务器(CIFS)的相关知识及指令
  • springcloud-2service consumer
  • JavaScript 进阶--charater3
  • Solon2 之基础:三、启动参数说明