Ruby 将三个字节从二进制文件转换为无符号整数的最佳方法?
将三个字节从二进制文件转换为无符号整数的最佳方法是什么 这是我目前的解决方案,你知道更好的吗Ruby 将三个字节从二进制文件转换为无符号整数的最佳方法?,ruby,Ruby,将三个字节从二进制文件转换为无符号整数的最佳方法是什么 这是我目前的解决方案,你知道更好的吗 a, b, c = file.read(3).unpack("C*") a << 16 | b << 8 | c a,b,c=file.read(3).解包(“c*”) aOoh..有趣: file.read(3).unpack("C*").inject { |r, n| r << 8 | n } file.read(3).unpack(“C*”).injecti
a, b, c = file.read(3).unpack("C*")
a << 16 | b << 8 | c
a,b,c=file.read(3).解包(“c*”)
aOoh..有趣:
file.read(3).unpack("C*").inject { |r, n| r << 8 | n }
file.read(3).unpack(“C*”).injection{| r,n | rOoh..fun:
file.read(3).unpack("C*").inject { |r, n| r << 8 | n }
file.read(3).unpack(“C*”).injection{| r,n | r如果您不介意自己添加一个额外的字节,您就可以完成这一切:
n = *("\x00" + file.read(3)).unpack('N')
我不知道这是否更好,这是相当主观的。如果您不介意自己添加一个额外的字节,您可以用它来完成这一切:
n = *("\x00" + file.read(3)).unpack('N')
我不知道这是否更好,这是相当主观的。使用BinData gem
require 'bindata'
n = BinData::Uint24be.read(file)
使用BinData gem
require 'bindata'
n = BinData::Uint24be.read(file)
我明白了,通过添加额外字节,您将其转换为32位整数。@skiffr:是的,您需要四个字节来直接解包,而不是手动摆弄位。我明白了,通过添加额外字节,您将其转换为32位整数。@skiffr:是的,您需要四个字节来直接解包,而不是手动摆弄位。