2011-07-26 41 views

回答

1

Ooh..fun:

file.read(3).unpack("C*").inject { |r, n| r << 8 | n } 
+0

既簡單又聰明。謝謝 ! – skiffr

0

您可以用unpack做到這一切,如果你不介意自己增加了一個額外的字節:

n = *("\x00" + file.read(3)).unpack('N') 

我不知道如果這樣做更好,那就很主觀。

+0

我看到,通過添加額外的字節你轉換它一個32位整數。 – skiffr

+0

@skiffr:是的,你需要四個字節來直接解壓它,而不是手動擺弄這些位。 –

2

使用BinData寶石

require 'bindata' 
n = BinData::Uint24be.read(file) 
相關問題