Python 2.7.6优化用于将大端字节包装到字符串中的代码

时间:2015-02-26 02:04:43

标签: python struct endianness

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 只有在那里设置代码并且不能在我的项目中使用。 实际上,印刷品也可用于设置问题 将字节作为套接字发送。

最初我有几次在阵列中有这个,但是当我转换了 数组到bytearray,我一直在运行,混入0x00。 与struct相同,你可以在我的解决方案中看到删除 最后是0x00。

1 个答案:

答案 0 :(得分:0)

这是一种更简单的方法。从问题中不清楚这是否正是你想要的结果。

values = [varA[name]['value'] for name in 'ZYXWV']
varC = struct.pack('>'+str(len(values))+'h', *values)