2013-01-24 102 views
1

如果我嘗試使用pack('L')將一個壓縮字節作爲無符號int32寫入文件,則編號10會寫爲5個字節。與任何其他數字我得到正常的行爲。奇怪行爲與包('L')

我寫了簡單的腳本:

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.

我的錯誤在哪裏?

紅寶石版本:紅寶石1.9.3p327(2012年11月10日)[I386-的mingw32]

+1

在'ruby 1.9.3p125(2012-02-16 revision 34643)上運行你的代碼片段[x86_64-darwin12.1.0]'我一直下載4個字節:( – Nevir

回答

4

這是一個換行符翻譯的問題(Windows專用):10字節被轉換爲CR + LF。

我不知道紅寶石,但openwb而不是w可能會有所幫助。

+0

是的,你說得對!非常感謝你很多。現在它工作正常。 – segrived

+0

對不起,意外點擊。 – segrived