我如何将字符串打包成3个字节的小端

问题描述

在我将数据处理回3字节二进制文件之后,我试图将其导出,以便将其重新加载到程序中。

我已经附加了用于解压缩的代码。

但是我不知道编辑后如何重新打包。

有帮助吗?谢谢

import numpy as np
import matplotlib.pyplot as plt
import struct

def unpack_24bit(bytes):
    return bytes[0] | (bytes[1] << 8) | (bytes[2] << 16)

def swap8(i):
    return struct.unpack("<i",struct.pack(">i",i))[0]

f=open('TEST_20190505_235640.0000000_Z_7_2.raw','rb')

print('============================');
print('PRINTING HEADER FOR FILE');
print('============================');
line = f.readline().decode('latin-1')
print(line);
scaleLine = '';
yZeroVoltOffsetLine = '';
nullingVoltageLine = '';
while('/DataInfo' not in line) :
    line = f.readline().decode('latin-1')
    if('<scale>' in line) :
        scaleLine = line.split('<scale>')[1].split('</scale>')[0];
    if('<y_zero_volt_offset>' in line) :
        yZeroVoltOffsetLine = line.split('<y_zero_volt_offset>')[1].split('</y_zero_volt_offset>')[0];
    if('<NullingVoltage>' in line) :
        nullingVoltageLine=line.split('<NullingVoltage>')[1].split('</NullingVoltage>')[0];
    print(line.replace('\n',''))
line = f.readline().decode('latin-1')
print(line);    
print('============================');

scale = float(scaleLine);
offset= float(yZeroVoltOffsetLine);
nulling= float(nullingVoltageLine);
print('scale=',scale);   
print('offset=',offset);   
print('nulling=',nulling);   

#Read in the data as a byte array (8-bit array)
ba = bytearray(f.read())
length = len(ba)
print('N-bytes=',length)
#Since the data is in 24bits,convert three bits at a time to a 24 signed bit
nvals = int(length/3);
print('N-recordings for 24bits (3-byte data)=',nvals)
dat = np.zeros(nvals)

#loop over all values
for i in range(nvals) :
    #a is first bit,b i second bit,c is third bit. Use unpack_24bit to convert to a signed 24 bit integer
    a = ba[i*3+0];
    b = ba[i*3+1];
    c = ba[i*3+2];
   # a = swap8(a)
   # b = swap8(b)
   # c = swap8(c)
    #perform steps 1 and 2 to convert to voltage
    dat[i] =((unpack_24bit([a,b,c])))

我执行的操作是纠正数据中的漂移并删除缩短文件的长度

任何建议将不胜感激

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...