# Binary output

**URL:** <https://discourse.julialang.org/t/binary-output/23276>\
**Category:** General Usage\
**Tags:** question, binaryio\
**Created:** [April 18, 2019, 12:59pm UTC](https://discourse.julialang.org/t/binary-output/23276 "2019-04-18T12:59:16Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mikel\_Antonana](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mikel_antonana/32/3095_2.png) [@Mikel\_Antonana](https://discourse.julialang.org/u/Mikel_Antonana)\
**Post date:** [April 18, 2019, 12:59pm UTC](https://discourse.julialang.org/t/binary-output/23276/1 "2019-04-18T12:59:16Z")

</div>

If you’re dealing with large amounts of data, typically, you don’t want to write  
big ASCII files. You want to write things as binary file (it takes less space to do that).  
In most programming language that’s easy but is there a way to write out (read) the numbers directly as binary in Julia?

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [April 18, 2019, 1:03pm UTC](https://discourse.julialang.org/t/binary-output/23276/2 "2019-04-18T13:03:48Z")

</div>

Several, including plain old `mmap`ing,

[https://docs.julialang.org/en/v1/stdlib/Serialization/](https://docs.julialang.org/en/v1/stdlib/Serialization/)

> **[GitHub - JuliaIO/HDF5.jl: Save and load data in the HDF5 file format from Julia](https://github.com/JuliaIO/HDF5.jl)**
>
> Save and load data in the HDF5 file format from Julia - GitHub - JuliaIO/HDF5.jl: Save and load data in the HDF5 file format from Julia

> **[GitHub - JuliaIO/BSON.jl](https://github.com/JuliaIO/BSON.jl)**
>
> Contribute to JuliaIO/BSON.jl development by creating an account on GitHub.

> **[GitHub - JuliaIO/JLD2.jl: HDF5-compatible file format in pure Julia](https://github.com/JuliaIO/JLD2.jl)**
>
> HDF5-compatible file format in pure Julia. Contribute to JuliaIO/JLD2.jl development by creating an account on GitHub.

and some others. Which one is best for you depends on your requirements. Search for past dicussions.

---

<div class="post-metadata">

**Author:** ![rdeits](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rdeits/32/286_2.png) [@rdeits](https://discourse.julialang.org/u/rdeits)\
**Post date:** [April 18, 2019, 5:05pm UTC](https://discourse.julialang.org/t/binary-output/23276/3 "2019-04-18T17:05:05Z")

</div>

In addition, if you are dealing with some esoteric format not mentioned above, you can also simply write values directly into a file:

```julia
julia> open("foo.dat", "w") do file
         write(file, 1) # write an integer
         write(file, 1.0) # write a Float64
       end
8

```

The above command produces a file with exactly 16 bytes (8 bytes for an Int64 and another 8 for a Float64):

```julia
shell> stat foo.dat
  File: foo.dat
  Size: 16 Blocks: 8 IO Block: 4096 regular file

```

Note that doing your binary output this way requires careful attention to things like endian-ness, so using an established binary format like HDF5, BSON, MsgPack, or JLD2 will likely make your life much easier in the long term.

---

<div class="post-metadata">

**Author:** ![Mikel\_Antonana](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mikel_antonana/32/3095_2.png) [@Mikel\_Antonana](https://discourse.julialang.org/u/Mikel_Antonana)\
**Post date:** [April 26, 2019, 1:30pm UTC](https://discourse.julialang.org/t/binary-output/23276/4 "2019-04-26T13:30:25Z")

</div>

Thank you
