在Elixir中生成一个随机字节

时间:2017-11-07 01:57:48

标签: elixir

这似乎是一个简单的问题,我可能会遗漏一些明显的东西,但我无法弄清楚如何在Elixir中创建一个返回随机字节的函数。我想要这样的东西:

def random_byte do
  <<0>>..<<255>> |> Enum.random()
end

但是你不能用二进制文件制作一个范围。我可以手动输入所有256个列表,但我希望有更好的方法来实现它。

1 个答案:

答案 0 :(得分:4)

你的意思是一个字节的二进制文件?您可以将Enum.random(0..255)放入<<>>

iex(1)> <<Enum.random(0..255)>>
<<181>>
iex(2)> <<Enum.random(0..255)>>
"x"

另一种方法是使用:crypto.strong_rand_bytes/1可能更慢,但这也是加密安全的):

iex(3)> :crypto.strong_rand_bytes(1)
<<205>>
iex(4)> :crypto.strong_rand_bytes(1)
"7"