gpt4 book ai didi

Erlang 从 UDP 数据包中获取字符串

转载 作者:行者123 更新时间:2023-12-04 05:40:43 25 4
gpt4 key购买 nike

我有这个 udp 数据包:

P = <<83,65,77,80,188,64,172,85,30,144,105,0,0,0,50,0,7,0,0,0,115,97,109,112,45,114,112,11,0,0,0,149,78,87,149,82,80,149,118,50,46,50,11,0,0,0,83,97,110,32,65,110,100,114,101,97,115>>

14-15 字节是玩家变量(字节宽度 - 2)
其中 15-18 字节是服务器主机名的长度(字节宽度 - 4)
19 + strlen 是服务器的主机名(字节宽度 - strlen)

我让玩家 var 所以:
<<_:11/bytes, Players:16/integer-big, Max:16/integer-big, _/binary>> = P.

是 50。
我怎样才能获得主机名?

最佳答案

您可以改进表达式以获得正确的值。请注意,正如您所说的,服务器长度是 32 位,并且从外观上看,它似乎是小端,而不是大端(注意名称是 7 个字节,在本例中为“samp-rp” , 这些字节的编码是 <<7,0,0,0>> ,表示小端(可能你的播放器也是小端)。另外,你的数字似乎有点偏离。表达式将是:

<<_:14/bytes, Players:16/integer-little, HNameLength:32/integer-little, HostNameBinary:HNameLength/binary, _/binary>> = P.

然后,可以使用 binary_to_list 将主机名从二进制文件转换为字符串。 :
HostName = binary_to_list(HostNameBinary).

关于Erlang 从 UDP 数据包中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11275638/

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