在c中编写二进制文件并在python中读取
发布时间:2020-12-16 10:02:59 所属栏目:百科 来源:网络整理
导读:我想使用c将一系列数字存储到二进制文件中,以便稍后使用 python打开.目前我在c中命名为* writer.cpp的脚本如下: #include fstreamint main(){ std::ofstream outFile; outFile.open("binaryFile.bin",std::ios::binary); int number = 0; for (int i=0; i10
我想使用c将一系列数字存储到二进制文件中,以便稍后使用
python打开.目前我在c中命名为* writer.cpp的脚本如下:
#include <fstream> int main() { std::ofstream outFile; outFile.open("binaryFile.bin",std::ios::binary); int number = 0; for (int i=0; i<10; i++){ number += i; outFile.write(reinterpret_cast<const char*>(&number),sizeof(int)); } outFile.close(); return 0; } 编译时哪个 g++ -o writerTest.x writer.cpp 并运行 ./writerTest.x 生成一个名为“binaryFile.bin”的二进制文件. 然后我尝试使用python使用以下名为reader.py的脚本来阅读它: import numpy as np from sys import argv path = str(argv[1]) x = np.fromfile(path) print x,type(x) 像这样运行 [ 2.12199579e-314 1.27319747e-313 3.18299369e-313 5.94158822e-313 9.54898106e-313] <type 'numpy.ndarray'> 这显然不是我所希望的.我做错了什么,应该如何妥善完成? 解决方法
你必须指定你将要读取的值的类型,numpy没有办法猜测,因为文件本身没有存储元数据.因此,在您的情况下,您必须执行以下操作:
x = np.fromfile(path,dtype=int) 如果您正在做这样的事情,强烈建议使用固定大小的整数而不仅仅是int,例如在C中你可以使用< cstdint>中的int32_t.在Python中,您可以将int32指定为dtype. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |