在Ruby 1.8.7中的unpack()中切换little / big endian

时间:2014-05-08 01:13:42

标签: ruby ruby-1.8.7

在Ruby 1.9.3中,你可以做到

    "\x00\x01".unpack 'S' #=> 1 * 256 + 0 = 256, my machine use little endian by default
    "\x00\x01".unpack 'S>' #=> 0 * 256 + 1 = 1

但Ruby 1.8.7并没有">" "<"注解。那么在1.8.7中,使用big endian解压缩的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

str = "\x00\x01"
puts str.unpack 'S'

p str.reverse
puts str.reverse.unpack 'S'


--output:--
256
"\001\000"
1

答案 1 :(得分:0)

您可以将n用于网络(大)字节序2字节值(N表示4字节整数)和v表示小字节2字节整数(V表示4字节)。请参阅the docs

"\x00\x01".unpack 'n'
# => [1] 
"\x00\x01".unpack 'v'
# => [256]

如果可能的话,你真的应该考虑升级你的Ruby版本。