操作系统 : 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;
}

  完整示例代码如下:

#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <endian.h> /*
double类型数据网络字节序与主机字节序之间的转换
*/ #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;
} int main()
{
double a = 123.456;
uint64_t b = 0;
double c = 0.0;
printf("a = %lf\n",a);
b = htonf64(a);
printf("b = %ld\n",b);
c = ntohf64(b);
printf("c = %lf\n",c);
return 0;
}

  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]

  完整代码:

#! /usr/bin/env python
# -*- coding:utf-8 -*- import struct 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] a = 123.456
print a
b = htonfl(a)
print b , hex(b)
print fltonl(b)

  

最新文章

  1. Lind.DDD.Aspects通过Plugins实现方法的动态拦截~Lind里的AOP
  2. SQL Server里的闩锁耦合(Latch Coupling)
  3. WAP端 经验记录1
  4. CSS 声明( Declarations )
  5. 导航栏视图设置 tabbleView 是设置总背景图
  6. 【BZOJ】【1045/1465】【HAOI2008】糖果传递
  7. 一款jQuery立体感动态下拉导航菜单特效
  8. c++面试常见160问
  9. Java继承与清理
  10. 数据结构:最小生成树--Prim算法
  11. 复制vmware虚拟机后,eth0无法显示问题
  12. winform制作小工具的技巧
  13. JDBC学习笔记(四)
  14. Windows 不能在本地计算机启动 OracleDBConsoleorcl的问题解决方法
  15. 关于PHP的 PHP-FPM进程CPU 100%的一些原因分析和解决方案
  16. delete 删除对象属性
  17. tomcat 启动报错org.hibernate.cfg.annotations.SimpleValueBinder.setType
  18. arcgis api for JavaScript _跨域请求
  19. Java简单的数据库连接
  20. python配置文件操作——configparser模块

热门文章

  1. java实现视频转码
  2. 今天七夕节,外面下着大雨,用Python的tkinter做一个下爱心雨的特效,发给妹子
  3. 将python工程部署到新服务器(对virtualenv工具进行环境迁移)
  4. 0-python变量及基本数据类型
  5. centos 6.5安装zabbix 4.4
  6. 警告:MySQL-server-5.6.26-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  7. mysql存储过程简单例子
  8. 爬虫多次爬取时候cookie的存储用于登入
  9. dp的平行四边形优化
  10. aria2 ssl