Unity3D 网络游戏框架(八、大小端问题)
我们在Main()方法中写入如下代码
然后按F5调试
在调试阶段点击窗口->内存->内存1(1)
我们在地址栏中输入&a,代表查看a的地址
我们会发现a在内存中是01 00 00 00(注意这是16进制),但是实际上1在转成16进制一个是00 00 00 01(因为int是四个字节,两个16进制是一个字节),为什么会是反着存?这就涉及到大小端问题,那什么是大小端呢?
大端:低地址存高位,高地址存低位,如:1在内存
00 00 00 01
低地址---------->高地址(注意地址是从前到高的顺序,而两个16进制一个字节,我们储存顺序是按照字节来算的)
小端:低地址存低位,高地址存高位,如:1在内存
01 00 00 00
低地址------>高地址
注意我们一般电脑都是小端存储比如上面我给的例子,而C#当中可以用BitConverter.IsLittleEndian来判断是否为小端,我的代码中是小端所以输出1
而我们解析数据希望适用于所有客户端,所以我们在这里将大端转换一下
public void Send(string sendStr){byte[] body = Encoding.UTF8.GetBytes(sendStr);short len = (short)body.Length;byte[] lenByte = BitConverter.GetBytes(len);//大小端if (!BitConverter.IsLittleEndian){Array.Reverse(body);}byte[] sendBytes = lenByte.Concat(body).ToArray();}
Unity3D 网络游戏框架(八、大小端问题)相关推荐
- Unity3D 网络游戏框架(一、网络基础)
1.套接字(Socket) 网络上两个程序通过一个双向的通信连接实现数据交换,这个连接的一端称为一个Socket.一个Socket包含了进行网络通信必须的五种信息:连接使用的协议.本地 ...
- Unity3D 网络游戏框架(四、异步客户端Socket)
在之前的代码中,我们了解了如何开发Socket网络通讯的代码,但是程序会阻塞,这篇我们来介绍如何开发异步Socket. 首先我们还是先查看一下微软官方文档的API了解下面的几个方法: 1.Socket ...
- Unity3D 网络游戏框架(七、TCP粘包和半包问题)
我们知道TCP是基于数据流的一种协议,所以在实际中可能会遇到粘包和半包问题 粘包:因send方法是将数据写到缓冲区,后由操作系统发送数据,所以可能会遇到这种情况,假设我们要发送一个hello和worl ...
- 【手把手AI项目】八、MobileNetSSD通过Ncnn前向推理框架在Android端的使用--Cmake编译(目标检测 objection detection)
一.前言 安装win10+linux-Ubuntu16.04的双系统(超细致) ubuntu16.04+caffe+CUDA10.0+cudnn7.4+opencv2.4.9.1+python2.7 ...
- Unity3D入门(八):物理组件之刚体与碰撞体
Unity3D入门(八):物理组件之刚体与碰撞体 准备工作 物理组件之刚体 刚体组件简介 使用刚体移动物体 遇到的问题 物理组件之碰撞体 碰撞体简介 碰撞体种类 Box Collider Sphere ...
- mima接收数据时粘包和大小端问题解决方案具体实现
使用java的mina框架接收数据总是会把数据拼接在一起然后再发送给上层的,所以在自定义网络传输协议的时候一定就在数据开始的固定位置处存放主体内容的数据长度,要不就是固定每个数据包的固定长度,其实两种 ...
- 《Unity3D网络游戏实战》第7章
<Unity3D网络游戏实战>第7章 服务端架构 总体架构 模块划分 游戏流程 Json编码解码 添加协议文件 引用System.web.Extensions 修改MsgBase类 测试 ...
- 【实战】Unity3d实战之Unity3d网络游戏实战篇(9):协议
Unity3d实战之Unity3d网络游戏实战篇(9):协议 学习书籍<Unity3d网络游戏实战> 罗培羽著 机械工业出版社 本文是作者在学习过程中遇到的认为值得记录的点,因此引用的代码 ...
- 对于类对象模型的理解(类大小计算+大小端字节序)
类对象模型 如何理解类与对象 类: 通俗理解,类相当于一个模型框架,限定了类有哪些成员变量,但从底层来看,内存并没有分配实际的物理空间来存储类 对象: 类对象即为类的具体描述,当类对象进行实例化过程中 ...
最新文章
- 精华阅读第 10 期 |解开阿尔法狗(AlphaGo)人工智能的画皮
- 通过反射创建动态代理对象(二)
- SpringMVC的数据响应-回写数据
- dp笔记:关于DP算法和滚动数组优化的思考
- 前端学习(3014):vue+element今日头条管理--表单验证基本使用2
- Dns-prefetch DNS 预解析优化页面加载速度
- Nokia防火墙配置过程
- bootstracp实现树形列表_用 Python 实现一个网页下载工具
- Clojure 1.8提升了性能和开发体验
- python 数据分析 电信_实例 | 教你用Python写一个电信客户流失预测模型
- html5网页设计大作业-dw企业网页设计带图片轮播留言 hbuilder大学生网页设计作业成品模板|百岁山矿泉水网页设计
- 爱奇艺很高兴接受元宇宙及其概念
- 十、如何给标识符命名
- CSS3中的伪元素选择器与scss
- 单片机学习记录一:c8t6原理图
- 让celery在后台运行
- 手机app抓包,无视SSLPinning
- SAP ABAP 查询物料的销售/生产消耗数据
- 最新kali之swaks
- 报名开启|飞桨黑客马拉松第三期如约而至,久等啦