Python中整数移位及二进制串操作
最近一个项目涉及到电压数据的接收和可视化处理。其中电压数据是由FPGA
通过TCP
协议传输的二进制流
,软件接收端需要安装数据帧格式进行解析后处理。由于嵌入式组的FPGA发送程序还处于调试阶段,软件接收端需要先自己写个TCP Server
模拟数据发送。项目开发语言是Python
。
以下是数据帧格式的简单定义:
对此数据帧格式的定义其实我个人还是有些看法的!首先是一般数据帧都有header
;然后是单通道数据只占用10bit,但是为了对齐32位补了12个零,有点浪费了。不过这个格式是嵌入式组定义的,也不好说什么啦 ?
那么第一个问题就是在Python
中如何将20个bit的两个通道数据和12个bit的补领拼接在一起,形成一个32位
的基本数据单元?搜了一下Python的文档,发现Python对二进制串处理相当不友好,根本不能进行类似字符串拼接这类的操作。一筹莫展之下请教了一下大牛,发现自己对于二进制位操作是真的一窍不通!计算机组成原理算是白学了:( 下面进入正题,如何从十进制整数进行位移操作转换为上面截图所示的数据帧格式。
由FPGA传输过来的电压数据是一个无符号整型(实际电压数据是浮点数,而且有正负,后续还有一个转换的算法,这里不继续透露了),那么假设我们有个