我正在生成用于模拟网络的单元测试的二进制文件。通过网络发送的一些数据处于 Little Endian 或 Big Endian 模式,我想用存根模拟这些数据并创建二进制文件。
因此,换句话说,我不会使用活动网络进行单元测试,而是生成包含我期望从网络套接字获得的等效数据的二进制文件。
我正在使用 Python 2.7 生成字节数组并将它们保存到文件中,但是我无法将我的浮点数组转换为小端模式。
from array import array
output_file = open(r"C:\temp\bin.dat", "wb")
float_array = array('d', [1, 1.2, 0.34, 9.8, 0.13, 1.1, 0.88, 72])
float_array.byteswap(); #This doesn't convert it to little endian!
float_array.tofile(output_file)
output_file.close()
所以我想知道是否有人知道如何操作数组,这样当我这样做时float_array.tofile()
,它将以小/大端模式写入二进制数据。
此代码提供以下输出:
Val = 8.6184E-41
Val = 0.0
Val = 4.1897916E-8
Val = 4.172325E-8
Val = -1.9212016E-29
Val = -490.3153
Val = -1.5834067E-23
与想要的不符array('d', [1, 1.2, 0.34, 9.8, 0.13, 1.1, 0.88, 72])
当我注释掉该byteswap
方法时,我得到以下信息
Val = 0.0
Val = 1.875
Val = 4.172325E-8
Val = 1.9
Val = 1.9023206E17
Val = 1.67
Val = -1.5881868E-23
但是,在真正的联网模式下,它的效果很好。但这对单元测试没有帮助!