[Python3] 通过二进制文件与C++程序交互[TZZ]
1、启动IDLE程序(必须安装Python 3),点击界面菜单中的“File > New File”,新建一个空白的Python源代码文件,然后保存为“interact_with_cpp.py”文件;
![[Python3] 通过二进制文件与C++程序交互[TZZ]](https://exp-picture.cdn.bcebos.com/a13bbe10bc33ec386a58e35b295f0c14c37b3c78.jpg)
3、继续向源码文件中追加“调用write函数的测试代码”。在这份代码中,通过open函数创建/打开了一个二进制文件,然后调用write函数将交互数据写入打开的文件中(Python中写入文件的方法可以参考引用文章)。代码编写完毕后,点击F5运行程序,见到打印信息且未出现任何错误提示,则表示代码运行正常;
![[Python3] 通过二进制文件与C++程序交互[TZZ]](https://exp-picture.cdn.bcebos.com/f591ab03c8d246fe3bad3837b8bf3bef344f1e78.jpg)
5、关掉记事本,重新用十六机制编辑器打开“interact.dat”(比如:UltraEditor)。以16进制打开文件后,所有的数据就都可以与我们之前写入的数据对上了(分析文件格式时,离不开十六进制编辑器(就是二进制编辑器,只是数值以16进制数显示));
![[Python3] 通过二进制文件与C++程序交互[TZZ]](https://exp-picture.cdn.bcebos.com/054056fe1e425d6b9e32b39d11883913e9e50078.jpg)
7、read函数代码编写完毕后,继续添加调用“read函数的测试代码”,确认一下之前以二进制保存的文件是否可以正常读取。如果Python自己都没法读,那么C++估计更不可能。编写完代码后,点击F5运行程序,如果能从Shell窗口见到正确的内容,则表示程序正常;
![[Python3] 通过二进制文件与C++程序交互[TZZ]](https://exp-picture.cdn.bcebos.com/586bfdefe07814316755c8d8dc6699cf03536278.jpg)
10、在打开的“InteractPython.cpp”文件中,编写读取“D:\test\interact.dat”文件的代码。这份代码中,引用了iostream(提供标准输入/输出)和fstream(提供文件访问)头文件。定义了一个ifstream对象(用于读取文件)并以二进制打开目标文件。随后,调用ifstream.read()读取了3个字节的文件标志和4个字节的数据长度。接着,读取了dataLen个字节的数据并保存到已分配的缓冲区中。最后,通过std::cout输出读取到内容(16进制输出字节时,必须把数据转换成int/unsigned类型)。数据区访问结束后,通过delete释放;
![[Python3] 通过二进制文件与C++程序交互[TZZ]](https://exp-picture.cdn.bcebos.com/27725684cde34b2c8f0d81cb0d0e7c75e4f44378.jpg)
11、C++读取文件的代码编写完毕后,点击工具栏上的“本地Windows调试器”调试运行程序。代码正常时,可以从控制台窗口中见到读取到的文件内容。通过核对后,可以确定文件读取成功;
![[Python3] 通过二进制文件与C++程序交互[TZZ]](https://exp-picture.cdn.bcebos.com/304f0999e92abab8b9a3904a4814f1c594eea178.jpg)
12、至此,Python通过二进制文件与C++程序交互的演示过程已全部介绍完毕。下一篇,我们接着谈谈“Python中的列表排序方法”!Enjoy!