Ruby如何将32位整数转换为网络字节顺序?

Ruby如何将32位整数转换为网络字节顺序?,ruby,sockets,endianness,Ruby,Sockets,Endianness,可能重复: 我已经问过“”了,但我还是不明白这个概念 我需要以网络字节顺序将数据的长度写入套接字 例如,如果以字节为单位的数据大小是1024,那么我需要在Ruby中将其表示为网络字节顺序 根据我先前问题的答案,答案是: [1,0,2,4].pack("NNNN") 但当我尝试这一点时,它也起作用: [10,24].pack("NN") [4,2,0,1].pack("NNNN") 正确的方法是什么?在Ruby中,将32位整数转换为网络字节顺序的正确方法是 #[integer].pack("

可能重复:

我已经问过“”了,但我还是不明白这个概念

我需要以网络字节顺序将数据的长度写入套接字

例如,如果以字节为单位的数据大小是1024,那么我需要在Ruby中将其表示为网络字节顺序

根据我先前问题的答案,答案是:

[1,0,2,4].pack("NNNN")
但当我尝试这一点时,它也起作用:

[10,24].pack("NN")
[4,2,0,1].pack("NNNN")

正确的方法是什么?

在Ruby中,将32位整数转换为网络字节顺序的正确方法是

#[integer].pack("N")
[1024].pack("N")

在Ruby中,将32位整数转换为网络字节顺序的正确方法是

#[integer].pack("N")
[1024].pack("N")

它们产生不同的结果-选择一个提供您想要的输出(我本以为是[1024].pack('N'))我不确定哪一个是正确的。使用[1024].pack(“N”)时,此结果流长度超过错误。实际上,最大流长度设置为25M。所以我完全糊涂了。如果你以前问过,你就不应该再问了。通过修改上一个问题使其更加清晰,您将使它变得活跃,更多的人将再次看到它。它们会产生不同的结果-选择一个提供您想要的输出(我原以为是[1024]。pack('N'))我不确定哪一个是正确的。使用[1024].pack(“N”)时,此结果流长度超过错误。实际上,最大流长度设置为25M。所以我完全糊涂了。如果你以前问过,你就不应该再问了。通过修改之前的问题使其更加清晰,您将使其变得活跃,更多的人将再次看到它。