代码之家  ›  专栏  ›  技术社区  ›  Picaud Vincent

在Julia中读取大型结构化二进制文件

  •  1
  • Picaud Vincent  · 技术社区  · 7 年前

    我有一个 包含相同记录的大型二进制文件 使用此内存布局:

    # Julia code
    struct Event
        ia::Int32
        ig::Int32
        Eg::Float64
        Tg::Float64
        xn::Float64
        yn::Float64
        zn::Float64
    
        # uninitialized constructor
        Event() = new()
    end
    

    如何在Julia中翻译此C++代码?

    // C++ code
    struct Event
    {
      int32_t ia;  
      int32_t ig;  
      double  Eg; 
      double  Tg;
      double  xn; 
      double  yn;
      double  zn;
    };
    
    // ... compute event_count
    
    std::ifstream in(filename,std::ifstream::binary);
    std::vector<Event> array(event_count);
    
    in.read((char*)array.data(), event_count*sizeof(Event)); // <- Julia way: how to?
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Bogumił Kamiński    7 年前

    您可以使用 read(filename, Event, n) 哪里 n 是要读取的元素数(目标向量的大小)。事实上 n 例如,可以是给出输出数组维度的元组。

    您可以查看的帮助 read 用于其他选项的函数。