tôi phải sử dụng một chương trình viết bằng C mà đọc dữ liệu từ một tập tin nhị phân theo cách nàyViết tập tin nhị phân trong python để được đọc bởi C
nCnt = 0;
for (i=0;i<h.nsph;++i) {
fread(&gp,sizeof(struct gas_particle),1,fp);
if (bGas) {
kd->p[nCnt].iOrder = nCnt;
for (j=0;j<3;++j) kd->p[nCnt].r[j] = gp.pos[j];
++nCnt;
}
}
Đoạn mã trên không phải là toàn bộ mã của chương trình Tôi đang sử dụng nhưng chỉ một phần có liên quan cho câu hỏi của tôi. Tôi cần đọc các vị trí của các hạt nCnt
, tức là tọa độ của từng hạt. Tôi có những vị trí trong một mảng python, trông như thế này
pos=array([[[ 0.4786236 , 0.49046784, 0.48877147],
[ 0.47862025, 0.49042325, 0.48877267],
[ 0.47862737, 0.49039413, 0.4887735 ],
...,
[ 0.4785084 , 0.49032556, 0.48860968],
[ 0.47849332, 0.49041115, 0.48877266],
[ 0.47849161, 0.49041022, 0.48877176]]])
Làm thế nào tôi nên viết mảng này trong một tập tin nhị phân để mã C sẽ đọc nó tốt?
Có lẽ đó là một 'mảng numpy'? –
Bạn đã kiểm tra điều này: http://stackoverflow.com/questions/807863/how-to-output-list-of-floats-to-a-binary-file-in-python (giải pháp được đề xuất sử dụng http: // docs .python.org/2/library/array.html)? – furins
Bạn có muốn xâu chuỗi dữ liệu của mình cho tính phổ quát không? Ví dụ, bạn có thể lưu trữ nó trong JSON, trong trường hợp đó bạn sẽ không phụ thuộc vào độ tin cậy hoặc bit. –