使用C++将网络字节流转为数字(大端与小端区别)

2023-05-16

首先需要了解下大端和小端存储的区别:
大端方式:用存储器的低字节地址单元来存放数据的最高字节
小端存放:用存储器的低字节地址单元来存放数据的最低字节
如下图所示:
在这里插入图片描述
网络上都是以字节流的方式传输数据的,网络字节顺序是网络传输时的字节序,按照TCP/IP协议是按照大端字节序传输方式,也就是高字节先走(先传12,接着34,56,78),确保双方解析对应即可。

网络字节序是大端字节序,我们经过网络发送整型数值0x12345678时,在X86平台中它是以小端发存放的,在发送之前需要使用系统提供的,字节序转换函数htonl(),将其转换成大端法存放的数值;
转换代码(C++):

    template<typename Num>
    void   NetworkToHost(const uint8_t* src, Num& num)
    {
        size_t  sizeOfNum= sizeof(num);
        if (IsLittleEndian())      //小端存储,需要转换
        {
            uint8_t* dst = reinterpret_cast<uint8_t*>(&num) + sz - 1;
            for (size_t i = 0; i < sizeOfNum; ++i)
            {
                *dst-- = *src++;
            }
        }
        else       //大端存储,直接将网络字节流拷贝过去
        {
            memmove(&num, src, sizeOfNum);
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用C++将网络字节流转为数字(大端与小端区别) 的相关文章

  • 用TAP方式让QEMU虚拟机与host联网

    转载自 cgjvcd 最终编辑 cgjvcd QEMU虚拟机网络的缺省模式是NAT方式 xff0c 即虚拟机可以通过host访问外网 xff0c 但host和外网无法访问虚拟机 如果要想让host访问虚拟机 xff0c 则可以使用TAP方式
  • TCP服务器端怎么判断客户端已经关闭了连接?

    http xidianzhangjun blog 163 com blog static 11548877120114411056939 哎 xff0c 首先 xff0c 又犯了一个大错 xff0c 前几天把这个问题通过实验搞懂了 xff0
  • PDP上下文和PDP地址

    http www mscbsc com 10037062 viewspace 61117 html S要接入外部PDN MS还应具有与该PDN相应的地址 称为PDP地址 PDP地址是用于外部分组数据网识别MS的PDP上下文时使用的地址 如用
  • Nmap从探测到漏洞利用备忘录

    http www freebuf com articles network 32302 html 在侦查期间 xff0c 扫描一直是信息收集的初始阶段 什么是侦查 侦查是尽可能多收集关于目标网络的信息 从黑客的角度来看 xff0c 信息收集
  • 内存分配器dlmalloc 2.8.3源码浅析

    目 录 1 本文档介绍 1 2 xff0e 边界标记法 2 3 分箱式内存管理 6 4 核心结构体malloc state 13 5 内存分配相关函数 16 5 1 函数dlmalloc 16 5 2 函数tmalloc small 25
  • C++环境下的expect远程命令执行

    首先 xff0c 必须安装几个开发包 xff0c 在centos fedora下 xff0c 可以使用yum安装 yum y install tcl devel expect devel 装完以后 xff0c 就可以使用expect来写代码
  • aufs 存储机制

    aufs存储机制已经发展到超出了改进squid磁盘I O响应时间的最初尝试 34 a 34 代表着异步I O 默认的ufs和aufs之间的唯一区别 xff0c 在于I O是否被squid主进程执行 数据格式都是一样的 xff0c 所以你能在
  • align-items 与 align-content 的区别

    最明显的区别是align content 适用于多行 xff0c align item 则是适用于单行 align content xff08 单行无效 xff09 可以设置上对齐 下对齐 居中 拉伸 平分剩余空间 xff1b align
  • Apache Traffic Server 简介

    http blog sina com cn s blog 502c8cc40100mw7n html 作者 xff1a 王柯龙 一 介绍 Apache Traffic Server xff08 ATS 或 TS xff09 是一个高 性能
  • 反向代理原理

    局域网主机联入互联网的一种方式 xff0c 使用代理上网可以节约紧缺的IP地址资源 xff0c 而且可以阻断外部主机对内部主机的访问 xff0c 使内部网主机免受外部网主机的攻击 但是 xff0c 如果想让互联网上的主机访问内部网的主机资源
  • SQLite 揭秘

    http msdn microsoft com zh cn magazine ff898405 aspx 孜孜不倦的程序员 SQLite 揭秘 Ted Neward 下载示例代码 为了与本刊主题保持一致 xff0c 现在应该回过头来介绍一下
  • Actor的原理

    http www cnblogs com netfocus p 3365166 html 先从著名的c10k问题谈起 有一个叫Dan Kegel的人在网上 xff08 http www kegel com c10k html xff09 提
  • 【车载开发系列】CAN总线帧种类介绍篇

    车载开发系列 CAN总线帧种类介绍篇 CAN总线帧种类介绍篇 车载开发系列 CAN总线帧种类介绍篇一 CAN总线当中帧的种类二 五种类型帧用途说明三 数据帧的组成1 xff09 帧起始2 xff09 仲裁段3 xff09 控制段4 xff0
  • VS2013 C++ Rest SDK 环境配置方法

    简介 C 43 43 REST SDK 是 Microsoft 的一个开源跨平台项目 xff08 使用 MIT 开源协议 xff09 其使用大量现代异步 C 43 43 API 实现了一个基于 HTTP HTTPS 协议的 服务端 客户端
  • 【日常】FIFA历年四强

    世界杯 xff0c 全称 xff1a 国际足联世界杯 xff08 FIFA World Cup xff09 世界杯每四年举办一次 xff0c 任何国际足联会员国 xff08 地区 xff09 都可以派出代表队报名参加这项赛事 从1930年第
  • 【日常】圣诞节、颜色⛄

    2022年圣诞节到来啦 xff0c 很高兴这次我们又能一起度过 关于圣诞节 x1f384 xff0c 大家想到什么颜色 xff1f x1f98c x1f381 x1f385 x1f525 demo online https codepen
  • 【笔记】openwrt - full cone NAT(全锥NAT)、解决“arp_cache: neighbor table overflow!”

    最近安装了比特彗星 xff08 bitcomet xff09 后 xff0c 老是收到警告说日志的接收超过每秒上限了 一看日志 xff0c 好家伙 xff0c 一堆的kern info kernel 194004 157620 neighb
  • 【记录】ChatGPT使用记录

    文章目录 2023年02月08日数学哲学Java其他 2023年02月09日ChatGPT网络 2023年02月10日算法组网 2023年02月11日ChatGPT xff08 优化目标 xff09 DOS 2023年02月15日影评 xf
  • 简历模板百度网盘自取

    链接 https pan baidu com s 1ptO hJs69ZA8kwdjRUwc7A 提取码 sibc 复制这段内容后打开百度网盘手机App xff0c 操作更方便哦 来自HHppGo的分享
  • 【工具】笔记软件测评(简单)

    介绍 笔记软件测评 印象笔记 开源 markdown xff08 不好用 xff09 本地存储 臭名昭著 xff0c 被资本搞烂的理想 notion 开源 本地存储 数据导出 xff1a PDF HTML Markdown amp CSV

随机推荐

  • 【工具】logseq 使用分享

    Github https github com logseq logseq 我用 logseq 记录的学习笔记 xff1a 战争历史 https lawsssscat github io logseq worldwar 三月八日国际劳动妇女
  • 谈一谈搜索引擎是如何跟踪你、出卖你的

    文章目录 跟踪结果点击跟踪关键词跟踪 other 跟踪 结果点击跟踪 以b网为例 xff0c 当我们搜索关键词 haha 后 xff0c 搜索结果链接是这样子的 xff1a https www baidu com link url 61 X
  • 整理alacritty使用笔记

    github xff1a https github com alacritty alacritty features xff1a https github com alacritty alacritty blob master docs f
  • 整理windows terminal使用笔记

    github xff1a https github com microsoft terminal 之前这篇文章写了windows中powershell的美化 xff0c 过程中安装了windows terminal 这里记录windows
  • 区分/区别:su、su -、sudo、sudo su -

    su和su 的区别 su 不设置环境变量su 设置环境变量 su 和sudo su 的区别 su 输入root用户密码sudo su 输入当前用户密码 xff08 前提 xff1a 当前用户在 etc sudors或 etc sudors
  • 整理ps使用笔记

    尽管使用ps只需要记住常用命令 xff1a ps aux ps ef 并且理解输出的列含义即可 但不理解命令的含义 xff0c 用起来总有种空虚感 下面研究一下 文章目录 介绍BSD默认simpleaxT r listoutput 总结 介
  • SSO、CAS、OAuth、OIDC

    参考 简单了解概念 xff1a https www bilibili com video BV1XG411w7DN 简单了解操作 xff1a https www bilibili com video BV1334y11739 openid
  • 整理现有的wiki私服项目

    五一技术创作马拉松 https bbs csdn net topics 614845804 https www csdn net qc 文章目录 核心功能现有项目wikijsBookStackmediawikiTiddlyWikigollu
  • 蓝桥杯电子类嵌入式(STM32G431)备赛学习记录(二)——LCD

    02 LCD屏 蓝桥杯正式比赛时会给参赛选手一个数据包 xff0c 里面会有LCD屏相关配置文件和库函数 xff0c 所以这里的例程相当于只是一个代码移植 具体LCD屏的学习可以参考火哥的视频 我们打开之前的工程文件以及 ioc文件 xff
  • Vscode如何设置代码保存后自动格式化

    方法一 xff1a 1 打开vscode xff0c 点击设置 2 搜索框输入格式化 xff0c 如图勾选这三个选项 方法二 xff1a 1 打开设置 xff0c 搜索框不要输入东西 xff0c 点击如图标识 2 点击后 xff0c 会打开
  • 解决桌面右键文件夹卡死的问题

    新买的电脑莫名其妙的右键文件夹就会卡死 xff0c 弄了好几天 xff0c 终于弄好了 xff0c 记录一下 原因大概率是因为右键选项中的一些第三方软件功能异常造成的 xff08 极大概率是百度云或者QQ导致 xff09 xff0c 使用S
  • wsl2与vscode的安装

    网页搜索wsl xff0c 可以看到微软的wsl官方文档 1 安装 开始菜单搜索功能 xff0c 找到启用或关闭Windows功能 勾选适用于linux的windows子系统 xff0c 和虚拟机平台 确定 xff0c 重启 打开微软商店
  • wsl2常用工具的安装及gitlab上搭建仓库

    1 安装wsl2 安装vscode 2 安装相应工具 apt install cmake apt install make apt install g 43 43 3 编写一个函数hello c 想要编译需要创建一个CMakeLists t
  • wsl2里java离线安装方法

    链接 xff1a https pan baidu com s 1azeWBSkaFbPXyfZX 5lAjA 提取码 xff1a 0312 1 把离线安装包放在任意路径下 例如 xff1a usr java下 2 解压tar xzvf op
  • 数据库SQL--数据表与索引(二)

    一 数据表 xff08 xff09 数据表是数据库中最基本的用于存储数据的对象 xff0c 可以认为数据表是以行和列组成的二维表格 xff0c 通常把行称为记录 xff0c 列称为字段 SQL中的常用数据类型 字符型数据 xff1a 大小写
  • Gstreamer学习(一)——安装Gstreamer

    Gstreamer学习 Gstreamer官方网站为https gstreamer freedesktop org 1 安装Gstreamer 官方文档 xff1a https gstreamer freedesktop org docum
  • Gstreamer学习(二)——播放一个视频

    1 参考范例 官方文档 include lt gst gst h gt int main int argc char argv GstElement pipeline GstBus bus GstMessage msg Initialize
  • 菜鸟笔记之计算机网络(3)

    万维网 了解万维网概念相关概念 声明 xff1a 以下是看的视频并结合网上资料所记的笔记 xff0c 侵权请联系删除 可能会有一些错误 xff0c 发现了会修改 了解万维网 概念 万维网 xff08 World Wide Web xff0c
  • STM32串口中断接收实验

    STM32串口中断接收实验的详细说明 准备代码实现总结 准备 材料 xff1a STM32F407ZGT6最小系统板 xff0c 串口1通过跳线帽连接到了CH340上 需求 xff1a 从电脑向板子的串口1发送一个字符串 xff08 以回车
  • 使用C++将网络字节流转为数字(大端与小端区别)

    首先需要了解下大端和小端存储的区别 xff1a 大端方式 xff1a 用存储器的低字节地址单元来存放数据的最高字节 小端存放 xff1a 用存储器的低字节地址单元来存放数据的最低字节 如下图所示 xff1a 网络上都是以字节流的方式传输数据