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

浮点数网络传输

操作系统 : CentOS7.3.1611_x64

gcc版本 :4.8.5

Python 版本 : 2.7.5

思路如下 :

1、将浮点数a通过内存拷贝,赋值给相同字节的整型数据b;

2、将b转换为网络字节序变量c并发送到服务端;

3、服务端接收c并将c转换为主机字节序变量d;

4、将整型数据d通过内存拷贝,赋值给相同字节的浮点数据e;

至此,浮点数网络传输完成。

C示例代码:

#define htonl64 htobe64
#define ntohl64 be64toh

uint64_t htonf64(double dvalue)
{
    uint64_t ulltmp = 0;
    memcpy(&ulltmp,&dvalue,8);
    ulltmp = htonl64(ulltmp);
    return ulltmp;
}

double ntohf64(uint64_t ulvalue)
{
    uint64_t ulltmp = 0;
    double ret = 0.0;
    ulltmp = ntohl64(ulvalue);
    memcpy(&ret,&ulltmp,8);
    return ret;
}

完整示例代码如下:

https://github.com/mike-zhang/cppExamples/blob/master/socketOpt/byteOrder/double_test1.c

python示例代码 :

def htonfl(f):
    s = struct.pack('d',f)
    return struct.unpack('!Q',s)[0]

def fltonl(v):
    s = struct.pack('!Q',v)
    return struct.unpack('d',s)[0]

完整示例代码如下:

https://github.com/mike-zhang/pyExamples/blob/master/socketRelate/byteOrder_double1.py

好,就这些了,希望对你有帮助。

本文github地址:

https://github.com/mike-zhang/mikeBlogEssays/blob/master/2018/20180320_浮点数网络传输.rst

欢迎补充

相关文章:

  • 第199天:js---扩充内置对象功能总结
  • 1.6-1.7 centos7-配置ip
  • Maven学习笔记四(坐标和依赖)
  • java 泛型中classT 和T的区别是什么?
  • django性能优化缓存view详解
  • thymeleaf 引入js css 无效
  • 【JS第13期】变量、作用域、内存等问题
  • 在CentOS6.8下安装Docker
  • Codepen 每日精选(2018-3-25)
  • Laravel核心解读--Facades
  • 学习rsyslog总结
  • 中国电信携手 Orange Business Services 扩大战略合作 为企业提供无缝物联网体验
  • add_argument 图片路径
  • 组件化、模块化、集中式、分布式、服务化、面向服务的架构、微服务架构概念介绍...
  • spring @transactional 注解使用注意点
  • ES6指北【2】—— 箭头函数
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • HTTP--网络协议分层,http历史(二)
  • JavaScript创建对象的四种方式
  • JDK 6和JDK 7中的substring()方法
  • Mybatis初体验
  • Spring Cloud Feign的两种使用姿势
  • 编写符合Python风格的对象
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于Android乐音识别(2)
  • 聊聊sentinel的DegradeSlot
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 思考 CSS 架构
  • 携程小程序初体验
  • 智能合约开发环境搭建及Hello World合约
  • Java性能优化之JVM GC(垃圾回收机制)
  • 函数计算新功能-----支持C#函数
  • 湖北分布式智能数据采集方法有哪些?
  • 我们雇佣了一只大猴子...
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #QT(智能家居界面-界面切换)
  • $.ajax()方法详解
  • (1) caustics\
  • (27)4.8 习题课
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (C语言)fgets与fputs函数详解
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (第二周)效能测试
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (剑指Offer)面试题34:丑数
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (算法)N皇后问题
  • (循环依赖问题)学习spring的第九天
  • (转)fock函数详解
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)用.Net的File控件上传文件的解决方案
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿