包装奇怪的行为('L')

时间:2013-01-24 18:38:33

标签: ruby io pack

如果我尝试使用pack('L')将压缩字节作为无符号int32写入文件,则数字10将写为五个字节。对于任何其他数字,我得到了正常的行为。

我写了简单的脚本:

x = 0
while x < 100 do
    puts "\nTesting %s..." % [x]
    h = [x].pack('L')
    puts "h length: %s" % [h.length]
    f = File.open('tmp', 'w')
    f.write h
    puts "position: %s" % [f.pos]
    x += 1
end

并获得this result;查看迭代编号10。

我的错误在哪里?

Ruby版本:ruby 1.9.3p327(2012-11-10)[i386-mingw32]

1 个答案:

答案 0 :(得分:4)

这是换行符(特定于Windows):字节10转换为CR + LF。

我不知道红宝石,但openwb代替w可能会有所帮助。