如何在Elixir中将整数列表写为16位值

时间:2016-01-21 05:03:49

标签: elixir

我有一个整数列表,其值介于[0-65535]之间。 我需要将这些文件写成16位整数。

我如何在Elixir中这样做?

我已搜索过,但我对int和二进制文件以及如何执行16位值的转换感到困惑。

我找到了如何转换为16位二进制文​​件:

<<12345 :: size(16)>>

2 个答案:

答案 0 :(得分:6)

您也可以使用流:

[1, 2, 3]
|> Stream.map(&<<&1::16>>)
|> Enum.into(File.stream!(filename))

这使用短格式::16代替::size(16)。文件流将自动处理打开和关闭文件。

答案 1 :(得分:0)

我是这样做的:

{:ok, file} = File.open(filename, [:write])

[1, 2, 3] |> Enum.each(fn(x) -> IO.binwrite(file, <<x :: size(16)>>) end)

File.close(file)