erlang - 如何在erlang中生成格式为0x00000001的32位大端数字

标签 erlang

我需要生成一个具有以下属性的变量 - 32 位大端整数,初始化为 0x00000001(我将把这个数字一个一个递增)。 erlang 中有这方面的语法吗?

最佳答案

在 Erlang 中,通常您会将此类数字作为纯整数保存在程序中:

X = 1.

或者等效地,如果你想使用十六进制文字:

X = 16#00000001.

当需要将数字转换为二进制表示以便将其发送到其他地方时,请使用位语法:

<<X:32/big>>

这将返回一个包含四个字节的二进制文件:

<<0,0,0,1>>

(这是一个 32 位大端整数。事实上,大端是默认值,所以你可以只写 <<X:32>><<X:64/little>> 将是一个 64 位小端整数。)

另一方面,如果你只想打印0x00000001中的数字格式,使用 io:format使用此格式说明符:

io:format("0x~8.16.0b~n", [X]).

8告诉它使用 8 个字符的字段宽度,16告诉它使用基数 16(即十六进制)和 0是填充字符,用于将数字填充到字段宽度。


请注意,与其他语言相比,在 Erlang 中递增变量的工作方式不同。一旦一个变量被赋予了一个值,你就不能改变它,所以你最终会进行递归调用,将新值作为参数传递给函数。 This answer有一个例子。

关于erlang - 如何在erlang中生成格式为0x00000001的32位大端数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55332733/

相关文章:

Erlang 列表过滤器语法

erlang - Erlang 中的二进制和位串有什么区别?

SSL 响应被分成两个回调

linux - 如何从 linux 命令验证 Erlang 配置文件

networking - Erlang:如何设置或检查UDP数据包中的TTL?

architecture - 你如何设计一个基于 Erlang/OTP 的分布式容错多核系统的架构?

erlang - 如何在 elixir/erlang 中解压缩 .7z 文件

macos - 为什么这个 erlang ssh 守护进程响应 'no hostkey alg' ?

erlang - 如何编译加载到字符串中的erlang代码?

erlang - 函数头中与变量的映射模式匹配