我正在写一个二进制文件来保存一个硬件仪器数据(Larson Davis 831C)基于制造商的示例代码。I以下样品:
<强> C++ >强>
string create_ldbin_header(int num_files, vector<int>& file_sizes)
{
ostringstream return_value;
int hdr1 = 'LD';
int hdr2 = 'BIN';
int hdr3 = 1;
int hdr4 = num_files;
return_value.write((char*)&hdr1, 4);
return_value.write((char*)&hdr2, 4);
return_value.write((char*)&hdr3, 4);
return_value.write((char*)&hdr4, 4);
for (int i = 0; i < num_files; ++i)
{
return_value.write((char*)&file_sizes[i], 4);
}
return return_value.str();
}
C中的另一个版本#
private void WriteLDBinHeader(BinaryWriter writer, int fileSize)
{
writer.Write();
writer.Write((Int32)0x0042494E);
writer.Write((Int32)0x00000001);
writer.Write((Int32)1);
writer.Write((Int32)fileSize);
}
我用Python做同样的尝试失败了。我试过几个版本,但我并不精通struct-pack。我认为表示格式的字符串应该是{0:032b}。总之,我最后一次尝试是:
hdr1 = "LD"
hdr2 = 'BIN'
hdr3 = "1"
hdr4 =str(y[0]["size"])
header = struct.pack('=iiii',hdr1,hdr2,hdr3,hdr4)
with open('instrumentFile.ldbin', 'wb') as f:
f.write(header + r.content)
如有任何翻译指导,将不胜感激
试试这个:
很有帮助。。。。它没有工作,但你给了我信心去迭代更多。我能够得到一个正确的工作文件来比较十六进制转储中的下载版本,并且能够解决这个问题。因此产生的工作代码如下:
有趣的是HD3以上不是在样本C++代码中,而是在C<。p>谢谢你的帮助
相关问题 更多 >
编程相关推荐