2

を使用して、パックされたバイトをunsigned int32としてファイルに書き込もうとするとpack('L')、その数10は5バイトとして書き込まれます。他の番号を使用すると、通常の動作が得られます。

私は簡単なスクリプトを書きました:

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

そして、この結果を取得します; 反復番号10を見てください。

私の間違いはどこにありますか?

Rubyバージョン:ruby 1.9.3p327(2012-11-10)[i386-mingw32]

4

1 に答える 1

4

これは改行変換の問題です(Windows固有):バイト10はCR+LFに変換されます。

私はルビーを知りませんがopenwb代わりにとwが役立つかもしれません。

于 2013-01-24T18:44:24.893 に答える