【发布时间】:2016-01-21 14:49:47
【问题描述】:
我有一个整数列表,其值在 [0-65535] 之间。 我需要将这些作为 16 位整数写入文件。
如何在 Elixir 中执行此操作?
我已经搜索过了,但我对整数和二进制文件以及如何执行 16 位值的转换感到困惑。
我找到了如何转换为 16 位二进制:
<<12345 :: size(16)>>
【问题讨论】:
标签: elixir
我有一个整数列表,其值在 [0-65535] 之间。 我需要将这些作为 16 位整数写入文件。
如何在 Elixir 中执行此操作?
我已经搜索过了,但我对整数和二进制文件以及如何执行 16 位值的转换感到困惑。
我找到了如何转换为 16 位二进制:
<<12345 :: size(16)>>
【问题讨论】:
标签: elixir
您也可以使用流:
[1, 2, 3]
|> Stream.map(&<<&1::16>>)
|> Enum.into(File.stream!(filename))
这使用缩写形式::16 而不是::size(16)。文件流会自动打开和关闭文件。
【讨论】:
我是这样做的:
{:ok, file} = File.open(filename, [:write])
[1, 2, 3] |> Enum.each(fn(x) -> IO.binwrite(file, <<x :: size(16)>>) end)
File.close(file)
【讨论】: