假设我有一个像arr = [24, 21, 25, 40, 236, 89]
这样的数组,用于表示IP地址(前4个字节)和端口号(最后2个字节),如http://wiki.theory.org/BitTorrentSpecification#Tracker_Response中的二进制对等部分
我的问题是:如何从中获取IP地址和端口号?
IP的 arr[0..3].reverse.join '.'
和端口的arr[5] << 8 | arr[4]
似乎不正确。
我在这里假设,因为我string_from_tracker.unpack 'C*'
获得arr
,所以这些位已经是本机字节序...
我不确定这是怎么回事。
感谢。
答案 0 :(得分:1)
什么是“不正确的部分”?即什么是预期的结果?
至少在这里你有一个bug。结合最后两个数字应该这样做:
(arr[5] << 8) + arr[4]
给出了23020
。看起来更像是Bittorrent端口号。
编辑:嘿:)其实这相当于上面的内容:
(arr[5] << 8) | arr[4]