gpt4 book ai didi

integer - 如何正确地将整数转换为位串?

转载 作者:行者123 更新时间:2023-12-02 10:49:55 25 4
gpt4 key购买 nike

我有一个问题:使用新的库(loom、ofs_handler、of_driver)我需要发送设置消息以进行切换。我必须创建这样的记录:

-record(ofp_field, {
class = openflow_basic :: ofp_field_class(),
name :: ofp_field_type(),
has_mask = false :: boolean(),
value :: bitstring(),
mask :: bitstring()
}).

但是'value'必须是一个位串,我不知道如何正确地将端口号(例如8080、6633)转换为位串,因为我可以制作 <<Port>>, <<Port:32/integer>>并得到不同的结果。有谁知道如何做到正确吗?
或者我必须使用 binary:encode_unsigned

最佳答案

在OpenFlow协议(protocol)中,TCP和UDP端口号表示为16位整数(参见1.4.0规范中的表12)。因此你应该写 <<Port:16>> .

OpenFlow 自始至终都使用大端整数(即网络字节顺序),如果您不指定其他字节序,Erlang 就会生成这种整数,以便代码可以在任何平台上正常工作。 (在 C 语言中,您必须在主机和网络字节顺序之间进行转换。)请参阅 "Bit Syntax Expressions in the Erlang Reference Manual"了解如何使用不同的字节顺序,如果您需要其他协议(protocol)。

关于integer - 如何正确地将整数转换为位串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37166234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com