从二进制文件转换三个字节到无符号整数的最佳方法?

时间:2011-07-26 20:13:56

标签: ruby

从二进制文件中将三个字节转换为无符号整数的最佳方法是什么?

这是我目前的解决方案,你知道更好吗?

a, b, c = file.read(3).unpack("C*")
a << 16 | b << 8 | c

3 个答案:

答案 0 :(得分:2)

使用BinData gem

require 'bindata'
n = BinData::Uint24be.read(file)

答案 1 :(得分:1)

Ooh..fun:

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

答案 2 :(得分:0)

如果您不介意自己添加额外的字节,则可以使用unpack完成所有操作:

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

我不知道这是否更好,这是非常主观的。