python和c通过socket进行数据传输时,会用到pack和unpack包来进行数据的打包和解包,对于不同类型的数据往往会存在一个“字节对齐”问题:

struct.error: unpack requires a buffer of 35 bytes

比如在一字节Byte型变量和八字节double型变量的中间可能会插入四个字节的0x00来自动对齐字节长度。
可以看到接收程序源代码如下:

dataFromCar_jingwei_from_car =client.recv(36)
y11, y12, y13, y14, y15, y16, y17, y18, y19, y20, y21, y22, y23, y24, y25, y26, y27, y28, y29, y30, y31, y32= struct.unpack( '!4i2d16B',dataFromCar_jingwei_from_car)
dataFromCar_jingwei_from_car =client.recv(4)

问题就出在“!4B2d”这里,在Byte型变量后接double型变量时,程序默认给你加上了四个字节的0x000x000x000x00来对齐字节。
解决办法之一是分段接收数据,先接收前四个字节的数据,再接收后面的double型数据。

dataFromCar_jingwei_from_car =client.recv(4)  # 接收GPS等
y11 , y12, y13,y14
=struct.unpack('!4B',dataFromCar_jingwei_from_car)
GPS = y11  # GPS协议类型
Star = y12  # 卫星个数dataFromCar_jingwei_from_car = client.recv(32)
y15, y16, y17, y18, y19, y20, y21, y22, y23, y24, y25, y26, y27, y28, y29, y30, y31, y32= struct.unpack( '!2d16B',dataFromCar_jingwei_from_car)
```python

python socket接收c传输的字节流数据时遇到的“字节对齐”问题struct.error: unpack requires a buffer of 35 bytes相关推荐

  1. python 网络编程 struct解包时报错 struct.error: unpack requires a buffer of 4 bytes

    报错信息 D:\Donta_tensorflow-yolov3\python\python.exe D:/10_gitee/network_programming/避障程序信号及图像接收端/20100 ...

  2. python socket接收图像 数据_python中socket接受数据的三种方法 | 学步园

    原位置:http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/408859 Description: An issue with socket ...

  3. python socket实现文件传输(防粘包)

    1.文件传输的要点: 采用iterator(迭代器对象)迭代读取,提高读取以及存取效率: 通过for line in file_handles逐行conn.send(): 2.socket粘包问题: ...

  4. python 转换深度摄像头获取的字节流数据为16bitPNG图像

    import numpy as np import struct import matplotlib.pyplot as pltfile = open(r"二进制文件目录", &q ...

  5. python+PyQt5实现文件安全传输

    实验目的 设计安全的信息传输工具,解决网络传输涉密文件过程中的安全性问题.安全的信息传输,涉及多个密码学知识点,在实验设计过程中,不断加深理解密码学基本概念和算法基础原理,并且能够锻炼独立的代码编写能 ...

  6. 文件传输_python socket实现文件传输(防粘包)

    1.文件传输的要点: 采用iterator(迭代器对象)迭代读取,提高读取以及存取效率: 通过for line in file_handles逐行conn.send(): 2.socket粘包问题: ...

  7. python socket双向通信_Python socket实现多对多全双工通信的方法

    服务器:#server.py #!/usr/bin/env python #-*-coding:utf-8-*- import sys import struct#将字符串打包为二进制流进行网络传输 ...

  8. python能和c语音交互吗_Python和C语言交互--ctypes,struct

    python和c语言进行数据交互,涉及类型转换,字节对齐,字节序大小端转换等.相关模块ctypes,struct,memoryview. 一.ctypes:python和c语言使用结构体数据进行交互 ...

  9. doris insert数据时出现问题:Invalid floating-point literal

    背景 在使用doris插入数据时,出现float插入错误: ERROR 1064 (HY000): errCode = 2, detailMessage = Invalid floating-poin ...

  10. 【python】-- Socket接收大数据

    Socket接收大数据 上一篇博客中的简单ssh实例,就是说当服务器发送至客户端的数据,大于客户端设置的数据,则就会把数据服务端发过来的数据剩余数据存在IO缓冲区中,这样就会造成我们想要获取数据的完整 ...

最新文章

  1. 实验协作的时候需要做什么?
  2. Applese 的回文串
  3. linux mysql5.7.18多实例_mysql5.7.13二进制包安装多实例
  4. Python 操作 PDF 的几种方法
  5. Spring 下注解说明
  6. Cocos2d-x 学习之引擎介绍
  7. Mac电脑使用svn下载版本
  8. Linux 操作系统的体系结构
  9. 1-(2-甲氧基乙基)-3-乙基咪唑三氟甲基磺酸盐{[C22O1IM][TfO]}离子液体
  10. 2020年某计算机菜鸡的中九保研之旅(武大、华科、北理、西交、中山)
  11. 如何在浏览器查看渲染时间?
  12. 《MLB美职棒大联盟》:世界大赛最有价值球员奖
  13. 利用flex弹性布局实现图片水平及垂直方向居中
  14. webpack 配置 alias
  15. dhcp服务器显示不启用,如何启用dhcp服务器
  16. parseInt()和parseFloat()的解析原理
  17. 股票数据爬虫(Scrapy框架与requests-bs4-re技术路线)
  18. iphone12怎样快速录屏(苹果12录屏方法)
  19. HX711电子秤数据转化原理
  20. SpaceX准备对Starhopper版星际飞船进行发射测试

热门文章

  1. sonos one_如何在Sonos上使用Apple Music
  2. vite多环境的配制
  3. 智慧大脑助力道路交通管理构建智能化管理系统
  4. FOXBORO FBM230 P0926GU模拟量输入模块
  5. 递归查询部门以及部门下的成员列表
  6. 文件扩展名,你知道这些吗?
  7. 【ESP 保姆级教程】玩转巴法云篇① ——初识巴法云
  8. 靶机测试--Dina
  9. Tedis:基于 TiKV 构建的 NoSQL 数据库
  10. 机器学习在物联网中有何应用?首先要搞清楚它和数据分析的区别