0

假设我有一个这样的数组arr = [24, 21, 25, 40, 236, 89],它表示一个 IP 地址(前四个字节)和一个端口号(最后两个字节),如http://wiki.theory.org/BitTorrentSpecification#Tracker_Response,二进制对等部分.

我的问题是:如何从中获取 IP 地址和端口号?

arr[0..3].reverse.join '.'对于 IP 和arr[5] << 8 | arr[4]端口似乎不正确。

我在这里假设既然我这样做string_from_tracker.unpack 'C*'了 get arr,这些位已经在本地字节序中......

我不确定这甚至应该如何工作。

谢谢。

4

1 回答 1

1

什么是“不正确的部分”?即预期的结果是什么?

至少在这里你有一个错误。组合最后两个数字应该像这样完成:

(arr[5] << 8) + arr[4]

这给了23020. 看起来更像是一个 Bittorrent 端口号。

编辑:呵呵 :) 其实这相当于上面的:

(arr[5] << 8) | arr[4]
于 2011-07-20T17:07:24.183 回答