2016-01-21 65 views
1

我有一个整数列表,其值介于[0-65535]之间。 我需要将这些文件写入16位整数。如何在Elixir中将整数列表写入文件作为16位值

我该如何在Elixir中做到这一点?

我已经搜索过,但我很困惑整数和二进制文件以及如何执行16位值的转换。

我已经找到了如何转换为16位二进制:

<<12345 :: size(16)>> 

回答

6

您也可以使用流:

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

这使用简写形式::16而不是::size(16)。文件流将自动打开和关闭文件。

+0

不错!这是我一直在寻找的,谢谢! –

0

这是我如何做的:

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

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

File.close(file)