CSV的二进制版本

CSV的二进制版本,csv,file-format,Csv,File Format,我想问一下一种便于数据记录的文件格式 例如,我必须记录轨迹数据,数据如下 t, x, y, z 0.001, 0.1, 0.2, 0.3 0.002, 0.11, 0.19, 0.31 0.003, 0.13, 0.16, 0.35 实际上,我搜索了文件格式,发现上面的文件格式被称为csv(逗号分隔值) 由于csv将数据记录为纯文本,因此数据很容易被人类读取 但有时需要长数字来记录数据(即159315488311248.128657) 而且需要的数字越长,写入文件所需的时间就越长 因此,我需要

我想问一下一种便于数据记录的文件格式

例如,我必须记录轨迹数据,数据如下

t, x, y, z
0.001, 0.1, 0.2, 0.3
0.002, 0.11, 0.19, 0.31
0.003, 0.13, 0.16, 0.35
实际上,我搜索了文件格式,发现上面的文件格式被称为csv(逗号分隔值)

由于csv将数据记录为纯文本,因此数据很容易被人类读取

但有时需要长数字来记录数据(即159315488311248.128657)

而且需要的数字越长,写入文件所需的时间就越长

因此,我需要一个满足以下条件的文件格式

  • 数据应该或可以用纯二进制记录
  • 元数据(即数据名称、记录日期)应包含在文件中
你认识谁吗

谢谢。

您正在寻找一种数据,因为这种数据是计算科学的典型数据

您当然希望采用文件标准,因为CSV由于能够使用许多不同的工具进行读写而广受欢迎。一个流行的选择是。存在适用于任何流行编程语言的HDF5库。HDF5在存储(许多n维)表和相关元数据方面表现尤其出色

有些人做的另一个典型选择是序列化为二进制浮点数。在C++中,这将归档为(源:)

#包括
#包括
int main()
{
浮点数f1=-187.33667,f2=0.0;
std::ofstreamout(“test.bin”,std::ios_base::binary);
if(out.good())
{
std::cout您正在寻找一个,因为这种数据是计算科学的典型数据

您当然希望采用文件标准,因为CSV很流行,因为它可以用许多不同的工具进行读写。一个流行的选择是。任何流行的编程语言都有HDF5库。HDF5在存储(许多n维)表和相关元数据方面表现得特别好

P>另一个典型的选择是串行化为二进制浮点数。在C++中,这将被归档为(源:)

#包括
#包括
int main()
{
浮点数f1=-187.33667,f2=0.0;
std::ofstreamout(“test.bin”,std::ios_base::binary);
if(out.good())
{

std::cout protobuf似乎是一个非常明显的选择。如果性能不是那么重要,而您主要记录的是数字。CSV绝对不是存储二进制数据的正确起点。@BenjaminGruenbaum,谢谢。我会检查protobuf。在我的情况下,代码以1kHz~运行,因此性能至关重要。@tangrs是的。我只是我想说的是,我碰巧知道我使用了CSV。:Dprotobuf似乎是一个很明显的选择。如果性能不是那么重要,而你主要是记录数字。CSV绝对不是存储二进制数据的正确起点。@BenjaminGruenbaum,谢谢。我会检查protobuf。在我的情况下,代码运行1kHz~,所以性能至关重要。@tangrs是的。我只是想说我碰巧知道我使用了CSV。:D
$ hexdump test.bin 
0000000 5630 c33b