Ruby网络字节顺序从字节值数组到本机endianness

Ruby网络字节顺序从字节值数组到本机endianness,ruby,networking,ip,endianness,unpack,Ruby,Networking,Ip,Endianness,Unpack,假设我有这样一个数组arr=[24,21,25,40,236,89],它表示一个IP地址(前四个字节)和一个端口号(最后两个字节),如二进制对等部分所示 我的问题是:如何从中获取IP地址和端口号 arr[0..3]。reverse.join.'对于IP和arr[5]什么是“不正确的部分”?也就是说,预期的结果是什么 至少在这里你有一个bug。最后两个数字的组合应如下所示: (arr[5] << 8) + arr[4] 这实际上做了同样的事情(位移位创建零,加上它们,or’ing是相

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

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

arr[0..3]。reverse.join.'
对于IP和
arr[5]什么是“不正确的部分”?也就是说,预期的结果是什么

至少在这里你有一个bug。最后两个数字的组合应如下所示:

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

这实际上做了同样的事情(位移位创建零,加上它们,or’ing是相同的)。预期的结果是我可以成功的ping。。。所以我真的认为我错了,因为我用这种方法得到的IP没有一个是正确的。是的,对。嗯。但是我不能帮你解决IP问题:-/如果我们知道应该是什么,然后从那里开始工作,会更容易。顺便说一句。为什么你认为你应该能够ping?并不是所有的计算机都响应ping,但也许你已经考虑到了这一点。问题是,我正在用随机的archlinux.torrent文件测试我的代码,而我得到了一个对等方列表。当然,有些计算机会阻止ping,但肯定不是全部!我想我可以得到一个bittorrent客户端并找到IP,但很难知道它是否与我试图解码的IP相同。解包“C*”部分是否保证以本机endianness返回字节?
(arr[5] << 8) | arr[4]