Python 2.7.6 优化将大端字节打包成字符串的代码
Python 2.7.6 Optimizing code for packing big endian bytes into a string
import struct
varA['Z']['value'] = 8700
varA['Y']['value'] = 8800
varA['X']['value'] = 8900
varA['W']['value'] = 8800
varA['V']['value'] = 8700
varB = ""
varC = ""
for name in 'Z Y X W V'.split(' '):
varB = C[name]['value']
varC += str(struct.pack('>h',varB))
print varC[:-1] + '\n'
我需要的是一串字节,
其中每个数字都是带符号的 int16 big-endian 字节。
这里的代码适用于我想做的事情,但我知道
有一个更优雅的解决方案。
我不会花任何时间优化 varA 因为它
只在那里设置代码,不会在我的项目中使用。
印刷品也在那里设置问题,我实际上
将字节作为套接字发送。
最初几次我把它放在一个数组中,但是当我转换
array 到 bytearray,我保持 运行 混合了 0x00。
与结构相同,正如您在我的解决方案中看到的那样删除了
0x00 最后。
这是一种更简单的方法。从问题中不清楚这是否正是您想要的结果。
values = [varA[name]['value'] for name in 'ZYXWV']
varC = struct.pack('>'+str(len(values))+'h', *values)
import struct
varA['Z']['value'] = 8700
varA['Y']['value'] = 8800
varA['X']['value'] = 8900
varA['W']['value'] = 8800
varA['V']['value'] = 8700
varB = ""
varC = ""
for name in 'Z Y X W V'.split(' '):
varB = C[name]['value']
varC += str(struct.pack('>h',varB))
print varC[:-1] + '\n'
我需要的是一串字节, 其中每个数字都是带符号的 int16 big-endian 字节。
这里的代码适用于我想做的事情,但我知道 有一个更优雅的解决方案。
我不会花任何时间优化 varA 因为它 只在那里设置代码,不会在我的项目中使用。 印刷品也在那里设置问题,我实际上 将字节作为套接字发送。
最初几次我把它放在一个数组中,但是当我转换 array 到 bytearray,我保持 运行 混合了 0x00。 与结构相同,正如您在我的解决方案中看到的那样删除了 0x00 最后。
这是一种更简单的方法。从问题中不清楚这是否正是您想要的结果。
values = [varA[name]['value'] for name in 'ZYXWV']
varC = struct.pack('>'+str(len(values))+'h', *values)