C#字节流通信格式
类似通信格式的实现关键点:
byte数组转float的实现,BitConvetor.toSingle()
float类型转by,BitConverter.GetBytes
#客户端发送
public byte[] funFloattoBytes(byte command,float[] coordinate_camera)
{
List<byte> bufferList = new List<byte>();
bufferList.Add(command);
for (int i = ; i < coordinate_camera.Count(); i++)
{
byte[] bufferMid = BitConverter.GetBytes(coordinate_camera[i]);
bufferList.AddRange(bufferMid);
}
return bufferList.ToArray();
} #服务器端接收
//客户端连接成功后,服务器接收客户端发来的消息
byte[] buffer = new byte[ * * ];
//实际接收到的字节数
int r = sendScoket.Receive(buffer);
if (r == )
{
break;
}
//string str = Encoding.UTF8.GetString(buffer, 0, r);
//ShowMsg(sendScoket.RemoteEndPoint + ":" + str);
byte command=buffer[];
float[] receiveCommandFloat=new float[] ;
for (int i = ; i < receiveCommandFloat.Count(); i++)
{
receiveCommandFloat[i] = BitConverter.ToSingle(buffer, * i+);
} ShowMsg(command,receiveCommandFloat);
拓展:
在c#中可以使用BitConverter类中的函数进行转换,如下:
名称 |
说明 |
以字节数组的形式返回指定的双精度浮点值。 |
|
以字节数组的形式返回指定的单精度浮点值。 |
|
返回由字节数组中指定位置的八个字节转换来的双精度浮点数。 |
|
返回由字节数组中指定位置的四个字节转换来的单精度浮点数。 |
BitConverter类进行基础数据类型与字节数组之间的相互转换,此类便于操作基本形式的类型。一个字节定义为一个 8位无符号整数。包含的方法如下:
名称 |
说明 |
将指定的双精度浮点数转换为 64 位有符号整数。 |
|
以字节数组的形式返回指定的布尔值。 |
|
以字节数组的形式返回指定的 Unicode 字符值。 |
|
以字节数组的形式返回指定的双精度浮点值。 |
|
以字节数组的形式返回指定的 16 位有符号整数值。 |
|
以字节数组的形式返回指定的 32 位有符号整数值。 |
|
以字节数组的形式返回指定的 64 位有符号整数值。 |
|
以字节数组的形式返回指定的单精度浮点值。 |
|
以字节数组的形式返回指定的 16 位无符号整数值。 |
|
以字节数组的形式返回指定的 32 位无符号整数值。 |
|
以字节数组的形式返回指定的 64 位无符号整数值。 |
|
将指定的 64 位有符号整数转换成双精度浮点数。 |
|
返回由字节数组中指定位置的一个字节转换来的布尔值。 |
|
返回由字节数组中指定位置的两个字节转换来的 Unicode 字符。 |
|
返回由字节数组中指定位置的八个字节转换来的双精度浮点数。 |
|
返回由字节数组中指定位置的两个字节转换来的 16 位有符号整数。 |
|
返回由字节数组中指定位置的四个字节转换来的 32 位有符号整数。 |
|
返回由字节数组中指定位置的八个字节转换来的 64 位有符号整数。 |
|
返回由字节数组中指定位置的四个字节转换来的单精度浮点数。 |
|
将指定的字节数组的每个元素的数值转换为它的等效十六进制字符串表示形式。 |
|
将指定的字节子数组的每个元素的数值转换为它的等效十六进制字符串表示形式。 |
|
将指定的字节子数组的每个元素的数值转换为它的等效十六进制字符串表示形式。 |
|
返回由字节数组中指定位置的两个字节转换来的 16 位无符号整数。 |
|
返回由字节数组中指定位置的四个字节转换来的 32 位无符号整数。 |
|
返回由字节数组中指定位置的八个字节转换来的 64 位无符号整数。 |
C#字节流通信格式的更多相关文章
- 中移物联网onenet入门学习笔记2:中移物联的通信格式
中移物联网硬件接入协议:LWM2M协议,EDP协议,MQTT协议,HTTP协议,TCP透传,MODBUS协议,JT/T808协议,RCMP协议 8种通信协议的区别在哪? 详细比较 EDP:OneNET ...
- Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制 JAVA 中原生的 socket 通信机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.co ...
- C51应用 Modbs Rtu协议实现与KEPServerEx 通信
最近一客户要求使用STC12C5A60S2实现Modbus Rtu协议与KEPServerEx V4.0软件通信,采集单片机P2口每位的状态,设置P0口每位的状态,实现三路AD转换其中一路采集的是C0 ...
- 【通信框架】Apache的开源通信框架thrift概述
在阅读的过程中有不论什么问题.欢迎一起交流 邮箱:1494713801@qq.com QQ:1494713801 一.作用 Thrift("Scalable Cross-Languag ...
- 【linux】U-BOOT与linux kernel通信: struct tag
欢迎转载,转载时需保留作者信息. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http://b ...
- LabVIEW上位机与串口通信
渊源 大一的时候,学校开了门公共选修课,叫LabVIEW编程,当时的我当然还不知道LabVIEW是啥东东,但还是选了.上课的老师是机械学院的一个副教授.他给我们展示了好几个用LabVIEW做的项目.譬 ...
- 通信—HTTP 协议入门(转载)
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等). HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于199 ...
- 【转】C# client 与java netty 服务端的简单通信,客户端采用Unity
http://blog.csdn.net/wilsonke/article/details/24721057 近日根据官方提供的通信例子自己写了一个关于Unity(C#)和后台通信的类,拿出来和大家分 ...
- WCF入门教程1——WCF简要介绍
什么是WCF Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. 整合了原有的windo ...
随机推荐
- centos 6.6 设备 xxx 似乎不存在, 初始化操作将被延迟
2019-04-02 问题描述: centos 6.6开启虚拟机之后,网卡服务不能正常启动,报错信息为:设备 xxx(网卡名称)似乎不存在, 初始化操作将被延迟 解决办法: 清空70-persiste ...
- Android动画及滑动事件冲突解决(转载)
原文链接:http://blog.csdn.net/singwhatiwanna/article/details/38168103 Android开发中动画和事件处理是程序员迈向高手的必经之路,也是重 ...
- 我最近用Python写了一个算法,不需要写任何规则就能自动识别一个网页的内容
我最近用Python写了一个算法,不需要写任何规则就能自动识别一个网页的内容,目前测试了300多个新闻网站的新闻页,都能准确识别
- UBUNTU 无法解析域名 解决方法
莫名其妙的,ubuntu 无法访问外网. ping www.taobao.com www.baidu.com 提示无效的主机名 但是ping 外网ip 都是可以PING通的. 所以断定是 dns问题 ...
- Javac之关于方法的调用1
方法的调用从Attr类的visitApply()方法进入,如下: /** Visitor method for method invocations. * NOTE: The method part ...
- javac符号名字的管理
在符号表中,很重要的一项内容就是符号的名字.名字的管理,要解决的主要问题就是名字的变长问题.在javac中,所有的符号名字放到了一个公用字符池中,对于相同的名字只保存一个. 其中涉及到的主要类及关系如 ...
- https证书pfx 生成 pem,crt,key
(1)将.pfx格式的证书转换为.pem文件格式: openssl pkcs12 -in xxx.pfx -nodes -out server.pem (2)从.pem文件中导出私钥server ...
- InnoDB的B+树索引
B+树索引其本质就是B+树在数据库中的实现,但是B+索引在数据库中有一个特点就是其高扇出性,因此在数据库中,B+树的高度一般都在2-3层,也就是对于查找某一键值的行记录,最多只需要2到3次IO,这倒不 ...
- 使用Redis SETNX 命令实现分布式锁(转载)
使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法. SETNX命令简介 命令格式 SETNX key value 将 key 的值设为 value,当且仅当 key 不存在. 若 ...
- ajax 传递数组给后台.net MVC 控制器
数组结构为: [ "5ae92c2786f3591b2cff1be5", "5ae91bb7ca673569a8d23a6e" ] 前台代码: $.ajax({ ...